错误TS1192:模块@ types / lodash / index没有默认导出

时间:2018-07-28 02:45:45

标签: angular lodash

我在项目中使用Angular 6.x.x并具有以下lodash依赖性。

  "dependencies": {
    "@angular/common": "6.0.9",
    "@angular/core": "6.0.9",
    ...
    "@types/lodash": "^4.14.114",
    ...
  },

以下两种导入方式都不适合我。

import _ from 'lodash';  

import * as _ from 'lodash';

3 个答案:

答案 0 :(得分:2)

似乎以下导入工作正常。我的环境有问题。删除node_modules目录并安装后,它可以正常工作。

import * as _ from 'lodash';

答案 1 :(得分:2)

简报

解决方案是:

  1. {"esModuleInterop": true}添加到您的.tsconfig
  2. 确保已在"@types/lodash"中安装了devDependencies

推理

简而言之: Typescript与ES6默认设置相比,具有不同的默认import机制。

例如,您可以通过以下方式从模块导入函数:

  1. 整体导入:

    import _ from 'lodash';
    const results = _.uniq([1, 1, 2, 3]);
    
  2. 仅导入一部分:

    import {uniq} from 'lodash';
    const results = _.uniq([1, 1, 2, 3]);
    

但是,在Typescript中,它为2. Import a part提供了一些语法糖,如下所示:

// This is valid in Typescript
import uniq from 'lodash';
const results = _.uniq([1, 1, 2, 3]);

哪一个好,但使1 Import as a whole不可推论。通过添加esModuleInterop,它可以使默认的ES6行为再次起作用。

此处在另一个线程中提到了更多详细信息: Is there a way to use --esModuleInterop in tsconfig as opposed to it being a flag?

答案 2 :(得分:1)

您需要安装lodash库。

“ @ types / lodash”是lodash类型定义,将lodash与打字稿一起使用是必需的。

要安装lodash,请运行:

npm i --save lodash

在终端中。