2016-09-29 2 views
2

Es funktioniert, aber jetzt habe ich mein Projekt geändert [email protected] mit seinen neuen rollup und es2015 Bündelung/Module. Ich bin nicht in der Lage, lodash richtig zu bekommen.Typoskript importieren Sie `lodash` - mit` es2015` Modulen?

lodash ist da, aber an der falschen Stelle - die Methoden, die ich brauchen, sind in _.default

npm Schritte

npm install lodash --save 
npm install @types/lodash --save-dev --save-exact 

Javascript

import * as _ from "lodash"; 
console.log(Object.keys(_)) // ["default", "__moduleExports"] 
console.log(_.default.VERSION) // 4.16.2 

Was geschieht?

Update

import _ from "lodash"; // imports as lodash, not _ 

// Chrome debugger console: 
console.log(_)  // VM2037:1 Uncaught ReferenceError: _ is not defined(…) 
console.log(lodash) // function 
console.log(Object.keys(lodash)) // returns: VM2075:1 ["templateSettings", "after", "ary", "assign", ...] 

Update 2

Vielleicht ist es etwas mit Chrome Debugger + Rollup? Ich änderte meinen Code import _ from "lodash"; und es funktioniert gut - außer in der Debugger-Konsole ...

console.log(">>> _.keys(_): " + _.keys(_).slice(10, 20)); 
    // >>> _.keys(_): bindAll,bindKey,castArray,chain,chunk,compact,concat,cond,conforms,constant 
    // and the _.sortBy() below works fine 
    var sorted = _.sortBy(photos, function (o) { 
     return o[sort.key]; 
    }); 

    // BUT, in the Chrome debugger (at breakpoint) 
    console.log(_)  // VM2037:1 Uncaught ReferenceError: _ is not defined(…) 

und in der Tat, wenn ich an den main.js schauen und nicht die Quelle Karte, ich sehe Anzeichen von Bäumen schütteln (?):

 console.log(">>> _.keys(_): " + lodash.keys(lodash).slice(10, 20)); 
     var sorted = lodash.sortBy(photos, function (o) { 
      return o[sort.key]; 
     }); 

es scheint, wie mein Problem mit der Chrome-Debug-Konsole ist, aber ich bin nicht sicher, wie es zu lösen ...

+0

'VM1912: 1 Uncaught Reference: VERSION nicht definiert ist (...)' – michael

Antwort

0

Das Problem ist, dass Sie verwenden import * as in Ihrem einführen. Dies wird nicht die Standardeinstellungen auswählen.

Verwenden Syntax, die Standardwerte anstelle importieren:

import _ from "lodash" 

Here is a link to the documentation

Es scheint, dass Aufsummierung Versuche Baum schüttelt das Bündel unter Verwendung der statischen Importen. Daher braucht es eine lodash-Abhängigkeit, die auch ES6 ist. Versuchen Sie, die lodash-es Paket stattdessen zu installieren und dann importieren:

import _ from "lodash-es" 
+0

Das geringfügig besser ist, importiert sie 'lodash' als' lodash', nicht '_' – michael

+0

Dies sollte lodash als' _' importieren. Kannst du deinen Code zeigen? –

+0

@michael sehr seltsam! Ich bin nicht mit Rollup vertraut, aber das sollte '_' definitiv an 'lodash.default' binden. Sehr eigenartig. –

Verwandte Themen