在Angular 2 + webpack项目中从lodash导入单个函数

时间:2016-07-20 02:35:01

标签: angular 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)。

Typescript按以下方式配置:

{
  "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"
  ]
}

更新

我目前正以下列方式导入模块:

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"
  }
}

更新

这是一个老问题,但为了将来参考,如果您不使用require,则可能需要安装正确的输入信息。在这种特殊情况下,我需要安装并声明模块lodash-es。

1 个答案:

答案 0 :(得分:1)

安装所需的功能:

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

然后使用以下方法导入:

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