错误TS6200:以下标识符的定义与另一个文件(@ types / jasmine)中的标识符冲突

时间:2019-03-20 11:42:39

标签: angular typescript jasmine

尝试使用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编译器试图使用此缓存的类型定义,这里可能会发生什么?

谢谢

3 个答案:

答案 0 :(得分:1)

从Angular 6.x迁移到8.x(typescript 3.5+)时,@ types / jasmine类型文件(index.d.ts和3.1 / index.d.ts)与彼此,我通过以下方式解决了问题:

快速概述

  1. 从package.json中删除了@ types / jasmine,而是将其3.1 / index.d.ts添加为源代码中的静态文件。
  2. 由于@ types / jasminewd2引用了@ types / jasmine,因此也从package.json中删除了该库并添加为静态文件。
  3. 更改了一些配置文件以识别静态类型文件。
  4. 重新安装库

详细步骤

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"
]

它有帮助。