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



我在项目中使用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';

下面的导入似乎运行得很好。我的环境有问题。在删除并安装了node_modules目录后,它就工作了。

import * as _ from 'lodash';

简介

解决方案是:

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

推理

简而言之:与ES6默认机制相比,Typescript具有不同的默认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行为再次工作。

在另一个帖子中提到了更多细节:有没有一种方法可以在tsconfig中使用--esModuleInterop,而不是将其作为标志?

您需要安装lodash库。

"@types/lodash"是将lodash与typescript一起使用所需的lodash类型定义。

安装lodash运行:

npm i --save lodash

在终端中。

相关内容

最新更新