2016-07-20 43 views
1

一個非常常見的問題。在Angular 2 + webpack項目中從lodash導入單一功能

如何從lodash導入單個函數?

我試過lodash.orderby,但我相信這應該與commonjs一起使用。我也試過lodash-es沒有太大的成功。我仍然收到各種錯誤,如Cannot find module 'lodash-es'Cannot find module 'lodash/orderBy'

另一種可能性是使用custom builds,但我無法弄清楚如何正確導入一個函數。

運行Angular 2 RC-4,typescript 2.1.0-dev,webpack 2(beta)。

打字稿被配置以下列方式:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "es6", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "moduleResolution": "node" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

UPDATE

我目前進口下列方式的模塊:

import {orderBy} from 'lodash-es'; 

這實際上是工作(也就是說,該應用程序正確使用orderBy),但錯誤仍然存​​在。我認爲問題在於沒有lodash-es的類型定義。

typings.json

{ 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160602141332", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446", 
    "jquery": "registry:dt/jquery#1.10.0+20160417213236", 
    "node": "registry:dt/node#6.0.0+20160613154055", 
    "typeahead": "registry:dt/typeahead#0.11.1+20160317120654" 
    }, 
    "dependencies": { 
    "lodash": "registry:npm/lodash#4.0.0+20160416211519" 
    } 
} 

UPDATE

這是一個老問題,但以供將來參考,如果你不使用require,你可能需要安裝正確的打字信息。在這種情況下,我需要安裝並聲明模塊lodash-es。

+0

你是什麼'typings.json'文件的內容和你如何導入排序依據:

npm install --save lodash.countby @types/lodash.countby 

使用然後將它導入? – tomastrajan

+0

不要導入lodash.orderby,需要它。 – estus

+0

@tomastrajan我用更多的信息更新了我的問題。我認爲輸入定義不適用於lodash-es。我包括lodash的定義,這就是你可以在typings.json中看到的。 –

回答

1

安裝所需的功能:

const countBy = require('lodash.countBy'); 
+0

這是一個古老的問題,但據我記憶,我沒有使用'require'。這個問題是關於宣佈正確的類型。 –

+0

是的,但不幸的是它仍然有效。我花了相當一段時間。而且,由於回答隱藏在您的問題中,我通過提交答案使其更加明顯。無論如何,這是我發現如何做到這一點的唯一方法。 – sax

+0

這是有效的,但不是針對這個特定的問題。我會更新這個問題來描述在這種情況下的工作。 –

相關問題