我有一个基于this种子项目的nodeJS项目。它有两个 tsconfig.json 文件,如下所示:
{
"compilerOptions": {
"target": "es6",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"../node_modules"
]
}
然而,尽管排除了node_modules,但我得到了大量错误,其中一些我已经在下面展示了。自从我开始使用新的npm i @types/xyz
方法以来,这已经发生了。
[0] node_modules/@types/core-js/index.d.ts(21,14):错误TS2300:重复标识符'PropertyKey'。
[0] node_modules/@types/core-js/index.d.ts(85,5):错误TS2687:'name'的所有声明必须具有相同的修饰符。
[0] node_modules/@types/core-js/index.d.ts(145,5):错误TS2403:后续变量声明必须具有相同的类型。变量'[Symbol.unscopables]'必须是'{copyWithin:boolean; entries:boolean; fill:boolean; find:boolean; findIndex:boolean;键:...',但这里有'any'类型。
[0] node_modules/@types/core-js/index.d.ts(262,5):错误TS2687:'flags'的所有声明必须具有相同的修饰符。
[0] node_modules/@types/core-js/index.d.ts(276,5):错误TS2687:'EPSILON'的所有声明必须具有相同的修饰符。
[0] node_modules/@types/core-js/index.d.ts(311,5):错误TS2687:'MAX_SAFE_INTEGER'的所有声明必须具有相同的修饰符。
答案 0 :(得分:3)
我在使用anguler2项目升级到ts2.0后遇到了这个问题。
我现在使用typings
并且有很多依赖项。至少它们包括@types,它复制了一些导入。但它们是必需的,我不能删除文件夹/依赖项(就像其他人建议的那样)。
在这里,我找到了一个指向解决方案的指针,它帮助了我: https://github.com/Microsoft/TypeScript/issues/11257
来自lucassp的样本:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"types": []
},
"exclude": [
"../node_modules"
]
}
我只需要将"types": []
添加到tsconfig.json文件中,这使得它不包含@types中的所有类型(因为它们都是由当前的typing管理的。)
这里是编译器选项from the doc的描述:
--types string[]
List of names of type definitions to include. See @types, –typeRoots and –types for more details.
微软似乎认为@types是新的黑色打字稿定义导入。阅读有关此here的更多信息。
最终我可能会迁移,但我会先让尘埃落定。
答案 1 :(得分:0)
在我的项目之前,我注意到重复标识符问题。我偶然做的是我通过npm在我的项目的子目录中安装了一个包。我不得不删除生成的node_modules
子目录来修复它。
此外,您的错误与我发现here
的帖子相似海报建议如下:
从package.json中删除@ types / core-js,删除node_modules和npm安装解决了这个问题。
答案 2 :(得分:0)
我遇到了同样的错误。我没有使用明确的@types/*
声明。但是,看起来更新包已将这些添加为依赖项。
我通过删除typings.json
中的条目来消除这些错误。基本上,任何node_modules/@types/
下的声明都应 在typings.json
中重复。
在更新typings prune
文件后忘记运行typings.json
,以便删除额外的内容。
答案 3 :(得分:0)
我对所有类似问题进行了分类;但我从%localappdata%\ Microsoft \ Typescript
中删除了整个Typescript文件夹然后,我跑了:
npm install -g typescript@2.1
神奇的一切都开始了......
我也多次重启VS2017,并多次删除我的解决方案node_modules ......这些让我感到沮丧,但没有提供解决方案。