2016-07-20 45 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

这是有效的,但不是针对这个特定的问题。我会更新这个问题来描述在这种情况下的工作。 –

相关问题