web-dev-qa-db-ja.com

エラーTS6200:次の識別子の定義が別のファイル(@ types / 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コンパイラがこのキャッシュされた型定義を使用しようとしている理由を理解するのに少し迷っていますが、ここで何が起こっているのでしょうか?

ありがとう

10
mindparse

ここで同じ質問に答えました: 識別子の定義が別のファイルの識別子と競合しています

もう一度投稿します。


tsconfig.spec.jsontypesサブセクションを確認してください。おそらくそのようなものです。

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

jasmineを削除したので、typesセクションは次のようになります。

"types": [
  "node"
]

そしてそれは助けた。

3
Maxim Palenov

Angular 6.xから8.x(TypeScript 3.5+)に@ types/jasmineタイプファイル(index.d.ts&3.1/index。 d.ts)お互いに競合して、次のように解決しました:

概要

  1. @ types/jasmineをpackage.jsonから削除し、代わりにその3.1/index.d.tsをソースコード内の静的ファイルとして追加しました。
  2. @ types/jasminewd2は@ types/jasmineを参照するため、このlibもpackage.jsonから削除し、静的ファイルとして追加しました。
  3. Static-type-filesを認識するようにいくつかのconfig-filesを変更しました。
  4. Libsを再インストールします

手順の詳細

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。 libsを再インストールします

実行npm install

紛争が後で再開されると

  • 上記の手順を元に戻します
  • パッケージを再インストール

npm install @types/jasmine --save-dev

npm install @types/jasminewd2 --save-dev

追加の背景

インターネットを検索したところ、同様の苦情が2つだけ示されているため、上記の解決策は修正のみであるという仮定は近いものですが、より良い解決策がなければなりません(そうしないと、問題について不平を言う人が増えます)。角度プロジェクトの構成内のどこかに認識されていないエラーがあり、「3.1未満のTypeScriptを使用している」と「3.1以降のTypeScriptを使用している」の間の決定が行われない可能性があります。 @ types/jasmine内で可能です。

1
user10324080