min*_*rse 7 jasmine typescript angular
尝试构建我的项目时(使用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
Run Code Online (Sandbox Code Playgroud)
我正在使用VSCode,当我转到有问题的行时,我可以选择查看与它冲突的文件。
这会将我带到以下位置的文件:
/Users/<user_name>/Library/Caches/typescript/3.3/node_modules/@types/jasmine/ts3.1/index.d.ts
我有点不明白为什么TS编译器尝试使用此缓存的类型定义,这可能是怎么回事?
谢谢
刚刚在这里回答了同样的问题:标识符的定义与另一个文件中的标识符冲突
再次发布。
检查types
您的小节tsconfig.spec.json
,很可能它有类似的内容
"types": [
"jasmine",
"node"
]
Run Code Online (Sandbox Code Playgroud)
我删除了jasmine
,所以我的types
部分看起来像这样:
"types": [
"node"
]
Run Code Online (Sandbox Code Playgroud)
这很有帮助。
从 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",
...
}
Run Code Online (Sandbox Code Playgroud)
2.改为添加:
文件夹和文件到 src 文件夹下的文件结构
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)
Run Code Online (Sandbox Code Playgroud)
3.更改配置:
tsconfig.json(其中 XXX 对应于您的文件夹结构)
...
"typeRoots": [
...
"src/ XXX /@types"
]
...
Run Code Online (Sandbox Code Playgroud)
tsconfig.spec.json
...
"types": [
...
"jasminewd2"
]
...
Run Code Online (Sandbox Code Playgroud)
4.重新安装库
跑步npm install
npm install @types/jasmine --save-dev
npm install @types/jasminewd2 --save-dev
由于在互联网上搜索仅显示 2 个类似的投诉,因此假设很接近,即上述解决方案只是一种解决方案,但必须有更好的解决方案(否则会有更多人抱怨该问题)。角度项目的配置中可能存在无法识别的错误,这可能会导致在“我们使用 3.1 以下的打字稿”和“我们使用 3.1 以上的打字稿”之间做出决定@types/jasmine 中不可能。
归档时间: |
|
查看次数: |
2342 次 |
最近记录: |