error TS6200: Definitions of the following identifiers conflict with those in another file (@types/jasmine)

不羁岁月 提交于 2019-12-23 09:19:23

问题


I am receiving the following error when attempting to build my project (using 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

I am using VSCode, and when I go to the line in question, I have the option to view the file it says its conflicting with.

This takes me to a file at the following location:

/Users/<user_name>/Library/Caches/typescript/3.3/node_modules/@types/jasmine/ts3.1/index.d.ts

I'm a little lost to understand why the TS compiler is trying to use this cached type definition, what could be going on here?

Thanks


回答1:


Having had the same problems when migrating from Angular 6.x to 8.x (typescript 3.5+) with both @types/jasmine type-files (index.d.ts & 3.1/index.d.ts) competing with each other i solved it the following way:

Quick overview

  1. Removed @types/jasmine from package.json and instead added its 3.1/index.d.ts as a static file within my sourcecode.
  2. As @types/jasminewd2 references @types/jasmine, also removed this lib from package.json and added as static file.
  3. Changed some config-files to recognize the static-type-files.
  4. Re-install libs

Steps in detail

1. Removed:

entries from package.json

   "devDependencies": {
       ...
       "@types/jasmine": "3.4.0",
       "@types/jasminewd2": "2.0.6",
       ...
   }

2. Added instead:

folders & files to file-structure below 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. Changed configs:

tsconfig.json (where XXX corresponds to your folder-structure)

   ...
   "typeRoots": [
      ...
      "src/ XXX /@types"
   ]
   ...

tsconfig.spec.json

   ...
   "types": [
      ...
      "jasminewd2"
   ]
   ...

4. Re-install libs

run npm install

Once conflicts will be resumed lateron

  • undo the above steps
  • re-install packages with

npm install @types/jasmine --save-dev

npm install @types/jasminewd2 --save-dev

Additional background

As searching the internet showed only 2 similar complaints the assumption is close, that the above mentioned solution is a fix only, but there must be a better one (otherwise more people would complain about the problem). it might be that there is an unrecognized error somewhere within the configuration of the angular-project that could lead to a point where a decision between "we're using typescript below 3.1" and "we're using typescript from 3.1 up" isn't possible within @types/jasmine.

  • error TS6200: Definitions of the following identifiers conflict with those in another file (@types/jasmine)
  • Definitions of identifiers conflict with those in another file



回答2:


Just answered the same question here: Definitions of identifiers conflict with those in another file

Posting it again.


Check types subsection in your tsconfig.spec.json, most probably it has something like that

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

I removed jasmine so my types section looks like that:

"types": [
  "node"
]

and it helped.



来源:https://stackoverflow.com/questions/55259962/error-ts6200-definitions-of-the-following-identifiers-conflict-with-those-in-an

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!