lodash-es生成错误“找不到名称”。

时间:2019-03-12 14:20:44

标签: angular typescript lodash

我遇到的问题类似于此处提到的问题(following lodash error on build 'Cannot find name 'Exclude''

ERROR in ... /node_modules/@types/lodash/common/object.d.ts (1689,12): Cannot find name 'Exclude'.
ERROR in ... /node_modules/@types/lodash/common/object.d.ts (1766,12): Cannot find name 'Exclude'.
ERROR in ... /node_modules/@types/lodash/common/object.d.ts (1842,34): Cannot find name 'Exclude'.

但是,我使用的是lodash-es软件包,而不是完整的lodash软件包,所报告的解决方案不适用于我。

在我的project.package文件中,我具有以下相关依赖项:

“ @ types / lodash-es”:“ 4.17.0”, “ lodash-es”:“ 4.17.4”, “ typescript”:“〜2.3.2”

据我所知,@ types / lodash-es似乎是在3月4日最近更新的(请参阅https://www.npmjs.com/package/@types/lodash-es),但是,我没有使用此最新更新的版本,而是指定了4.17专门是.0。

相关问题的答案表明,解决方案是指向变更前的变更包,但我没有尝试过。

如何解决此问题?正因为如此,生产版本正在中断...

更新: 在查看项目的package-lock.json文件时,我发现了以下内容:

"@types/lodash": {
  "version": "4.14.123",
  "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz"
},
"@types/lodash-es": {
  "version": "4.17.0",
  "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.0.tgz",
  "requires": {
    "@types/lodash": "*"
  }
},

在我看来,当@ types / lodash-es要求@ types / lodash:*时,@ types / lodash的最新版本(4.14.123-包括重大更改)已引入项目中。

当我不控制由依赖项“ @ types / lodash-es”创建的package-lock.json条目时,如何导致引入不同版本的@ types / lodash:“ 4.17.0” ?

2 个答案:

答案 0 :(得分:2)

正如您所提到的,@ types / lodash似乎在最近的更新中引入了此问题。

我通过在package.json中指定适当的@types/lodash版本来解决此问题。

如对the issue linked in the original post的答复所建议,可以通过在您的package.json中添加"@types/lodash": "4.14.121"来解决此问题。

答案 1 :(得分:0)

您也可以尝试为旧版本的Typescript安装类型。对于Typescript 2.5,它将是:npm i -D @types/lodash@ts2.5