尝试使用Angular CLI构建项目时收到以下错误消息
ERROR in ../my-app/node_modules/@types/jasmine/index.d.ts(18,1): error TS6200: Definitions of the following identifiers conflict with those in another file: Expected, SpyObjMethodNames, clock, CustomEqualityTester, CustomMatcherFactory, ExpectationFailed, SpecFunction, SpyObj, jasmine
我正在使用VSCode,当我转到有问题的行时,可以选择查看与该文件冲突的文件。
这会将我带到以下位置的文件:
/Users/<user_name>/Library/Caches/typescript/3.3/node_modules/@types/jasmine/ts3.1/index.d.ts
我有点不明白为什么TS编译器试图使用此缓存的类型定义,这里可能会发生什么?
谢谢
答案 0 :(得分:1)
从Angular 6.x迁移到8.x(typescript 3.5+)时,@ types / jasmine类型文件(index.d.ts和3.1 / index.d.ts)与彼此,我通过以下方式解决了问题:
1。已删除:
从package.json进入
"devDependencies": {
...
"@types/jasmine": "3.4.0",
"@types/jasminewd2": "2.0.6",
...
}
2。改为添加:
文件夹和文件到src-folder下的文件结构
src (folder)
...
@types
jasmine
index.d.ts (from node_modules/@types/jasmine/3.1/index.d.ts)
jasminewd2
index.d.ts (from node_modules/@types/jasminewd2/index.d.ts)
3。更改的配置:
tsconfig.json(其中XXX对应于您的文件夹结构)
...
"typeRoots": [
...
"src/ XXX /@types"
]
...
tsconfig.spec.json
...
"types": [
...
"jasminewd2"
]
...
4。重新安装库
运行npm install
npm install @types/jasmine --save-dev
npm install @types/jasminewd2 --save-dev
由于在互联网上搜索仅显示了2个类似的投诉,因此假设是接近的,上述解决方案仅是一种解决方案,但必须有一个更好的解决方案(否则,会有更多人抱怨该问题)。在angular-project的配置中某处可能存在无法识别的错误,这可能导致“我们在3.1以下使用打字稿”和“我们从3.1以上版本使用打字稿”之间的决策是“在@ types / jasmine中是不可能的。
答案 1 :(得分:1)
如果有人在使用 mangoose 时遇到此错误,5.11 的 mongoose 中默认包含类型,因此只需从您的 devDependencies 中删除 @types/mongoose
即可正常工作。参考这个。
@types/mongoose - Type Definitions conflict with those in mongoose 5.11
#49950
答案 2 :(得分:0)
在这里回答了同样的问题:Definitions of identifiers conflict with those in another file
再次发布。
检查types
中的tsconfig.spec.json
小节,很有可能是这样的
"types": [
"jasmine",
"node"
]
我删除了jasmine
,因此我的types
部分如下所示:
"types": [
"node"
]
它有帮助。