2016-09-29 172 views
2

它曾經工作過,但現在我用rollupes2015捆綁/模塊將我的項目更改爲[email protected]。我無法正確地獲得lodashTypescript是否用`es2015`模塊導入`lodash`?

lodash是存在的,但在錯誤的地方 - 我需要的方法是_.default

NPM步驟

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 

發生了什麼事?

更新

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", ...] 

更新2

也許這是一些與Chrome的調試器+彙總?我改變了我的代碼import _ from "lodash";,它工作正常 - 除了在調試器控制檯...

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(…) 

而事實上,當我看着main.js而不是源地圖,我看到的跡象樹搖動(?):

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

好像我的問題是與Chrome的調試控制檯,但我不知道如何解決它...

+0

'VM1912:1未捕獲的ReferenceError:版本是沒有定義(...)' – michael

回答

0

的問題是,您在使用import * as您進口。這不會選擇的默認值。

使用的語法,將導入默認來代替:使用靜態導入

import _ from "lodash" 

Here is a link to the documentation

看來,彙總嘗試樹搖包。因此,它也需要一個依賴ESod的依賴關係。嘗試安裝lodash-es包來替代,然後將其導入:

import _ from "lodash-es" 
+0

即略好,但進口'lodash'爲'lodash',不'_' – michael

+0

這應該導入lodash作爲'_'。你能顯示你的代碼嗎? –

+0

@ michael很奇怪!我對rollup不熟悉,但是它肯定會將'_'綁定到'lodash.default'。很奇怪。 –

相關問題