プロジェクトをビルドしようとすると、次のエラーが表示されます(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コンパイラがこのキャッシュされた型定義を使用しようとしている理由を理解するのに少し迷っていますが、ここで何が起こっているのでしょうか?
ありがとう
ここで同じ質問に答えました: 識別子の定義が別のファイルの識別子と競合しています
もう一度投稿します。
tsconfig.spec.json
のtypes
サブセクションを確認してください。おそらくそのようなものです。
"types": [
"jasmine",
"node"
]
jasmine
を削除したので、types
セクションは次のようになります。
"types": [
"node"
]
そしてそれは助けた。
Angular 6.xから8.x(TypeScript 3.5+)に@ types/jasmineタイプファイル(index.d.ts&3.1/index。 d.ts)お互いに競合して、次のように解決しました:
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内で可能です。