【问题标题】:Definitions of identifiers conflict with those in another file标识符的定义与另一个文件中的定义冲突
【发布时间】:2019-12-16 11:38:15
【问题描述】:

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

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

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

两个冲突的文件如下:

@types/jasmine/index.d.ts

@types/jasmine/ts3.1/index.d.ts

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

还有人有其他建议吗?

【问题讨论】:

标签: angular typescript jasmine


【解决方案1】:

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

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

“skipLibCheck”:真

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

希望对你有帮助。

【讨论】:

  • 谢谢你的伙伴,它真的节省了我的时间!
【解决方案2】:

检查tsconfig.spec.json 中的types 小节,很可能它有类似的东西

"types": [
  "jasmine",
  "node"
]

我删除了jasmine,所以我的types 部分看起来像这样:

"types": [
  "node"
]

它有帮助。

【讨论】:

    【解决方案3】:

    刚刚在这里回答了同样的问题:error TS6200: Definitions of the following identifiers conflict with those in another file (@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",
           ...
       }
    

    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)
    

    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 个类似的投诉,因此假设很接近,即上述解决方案只是一种解决方案,但必须有更好的解决方案(否则会有更多人抱怨这个问题)。可能是角度项目的配置中某处存在无法识别的错误,这可能导致在“我们使用低于 3.1 的打字稿”和“我们使用 3.1 以上的打字稿”之间做出决定的点是'在@types/jasmine 中是不可能的。

    【讨论】:

    • 抱歉回复晚了。我已经两次尝试了这个解决方案,但都没有得到我想要的结果;我仍然遇到同样的错误。不过,感谢您的尝试。
    猜你喜欢
    • 1970-01-01
    • 2019-08-11
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2017-11-22
    • 2015-11-17
    • 1970-01-01
    相关资源
    最近更新 更多