标识符的定义与另一个文件中的定义冲突

Jus*_*tin 8 jasmine typescript angular

我正在将旧组件从 Typescript 6 更新到 8。我已经更新了 中的 Jasmine 依赖项package.json,但现在出现错误:

“以下标识符的定义与另一个文件中的定义冲突:

ImplementationCallback、ExpectedRecursive、Expected、SpyObjMethodNames、CustomEqualityTester、CustomMatcherFactory、ExpectationFailed、SpecFunction、SpyObj、jasmine”。

两个冲突的文件如下:

@types/jasmine/index.d.ts

@types/jasmine/ts3.1/index.d.ts
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除缓存以及删除 node_modules 和 package-lock 然后重新安装所有内容。我尝试删除其中一个文件并将另一个文件用作唯一的 index.d.ts 文件,但随后出现错误“找不到 'jasmine' 的类型定义文件。”

有没有人有其他建议?

小智 5

我实际上正在将一个 angular 6 应用程序迁移到 angular 8 并且遇到了与此处描述的相同的问题。我找到了一个适合我的替代解决方案。

将此标志添加到 tsconfig.json 对我有用:

“skipLibCheck”:真

文档内容为“跳过所有声明文件 (*.d.ts) 的类型检查”。对它一点都不满意,但是在我完成所有代码相关内容的迁移时它可以工作。

希望能帮助到你。


use*_*080 1

刚刚在这里回答了同样的问题:错误 TS6200:以下标识符的定义与另一个文件中的标识符冲突(@types/jasmine)

再次发布。如果这是错误的,请编辑/建议如何正确执行


从 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中删除了这个lib并添加为静态文件。
  3. 更改了一些配置文件以识别静态类型文件。
  4. 重新安装库

详细步骤

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 中不可能。