2017-07-27 12 views
11

私はTypescript 2.4.1を使用しており、プロジェクトで多くのパッケージをアップグレードしました。その中で私はAngularを2から4.3.1にアップグレードしました。 は@typesパッケージには多くの修正をした後、私は残されていたエラーは以下のとおりです。エラーTS2304:ビルド:角4にアップグレードした後で名前 'Iterable'を見つけることができません

\node_modules\@types\jquery\index.d.ts(2955,63): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(767,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(771,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(775,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(779,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(783,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(787,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(791,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(795,24): error TS2304: Build:Cannot find name 'Iterable'. 
\node_modules\@types\three\three-core.d.ts(799,24): error TS2304: Build:Cannot find name 'Iterable'. 

私は多くの類似の質問と回答を発見したと実勢溶液「はes2015を」ターゲットおよび/またはLIBを追加することです:[」 dom "、" es2015 "、" es2015.iterable "]。 私はこれらすべてを試しましたが、同じ 'Iterable'エラーが残っています。

私の更新tsconfig.jsonは、このようにある:

{ 
    "compileOnSave": true, 
    "compilerOptions": { 
     "declaration": false, 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "lib": [ "dom", "dom.iterable", "es2015", "es2015.iterable", "esnext" ], 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "noImplicitAny": true, 
     "noEmitOnError": true, 
     "outDir": "./wwwroot/js", 
     "removeComments": false, 
     "rootDir": "./Client", 
     "sourceMap": true, 
     "suppressImplicitAnyIndexErrors": true, 
     "target": "es2015", 
     "typeRoots": [ 
      "./node_modules/@types", 
      "./Client" 
     ] 
    }, 
    "exclude": [ 
     "node_modules", 
     "wwwroot/lib" 
    ], 
    "filesGlob": [ 
     "./Client/**/*.ts" 
    ] 
} 

私package.jsonは以下のとおりです。

{ 
    "version": "1.0.0", 
    "name": "web-server", 
    "private": true, 
    "dependencies": { 
     "@angular/common": "^4.3.1", 
     "@angular/compiler": "^4.3.1", 
     "@angular/core": "^4.3.1", 
     "@angular/forms": "^4.3.1", 
     "@angular/http": "^4.3.1", 
     "@angular/platform-browser": "^4.3.1", 
     "@angular/platform-browser-dynamic": "^4.3.1", 
     "@angular/router": "^4.3.1", 
     "@angular/upgrade": "^4.3.1", 
     "bootstrap": "3.3.7", 
     "core-js": "2.4.1", 
     "lodash": "4.17.4", 
     "pixi.js": "4.5.4", 
     "reflect-metadata": "0.1.10", 
     "rxjs": "^5.4.2", 
     "systemjs": "0.20.17", 
     "three": "0.86.0", 
     "zone.js": "0.8.14" 
    }, 
    "devDependencies": { 
     "@types/chai": "^4.0.1", 
     "@types/jquery": "3.2.9", 
     "@types/lodash": "4.14.71", 
     "@types/mocha": "2.2.41", 
     "@types/pixi.js": "4.5.2", 
     "@types/three": "0.84.19", 
     "bower": "^1.8.0", 
     "gulp": "3.9.1", 
     "gulp-clean": "^0.3.2", 
     "gulp-concat": "^2.6.1", 
     "gulp-typescript": "^3.2.1", 
     "gulp-inline-ng2-template": "^4.0.0", 
     "gulp-sourcemaps": "^2.6.0", 
     "gulp-tsc": "^1.3.2", 
     "gulp-uglify": "^3.0.0", 
     "merge2": "^1.1.0", 
     "path": "^0.12.7", 
     "rimraf": "^2.6.1", 
     "systemjs-builder": "^0.16.9", 
     "typescript": "2.4.1" 
    }, 
    "scripts": { 
     "gulp": "gulp", 
     "rimraf": "rimraf", 
     "bundle": "gulp bundle", 
     "postbundle": "rimraf dist" 
    } 
} 

どのようにそれは "反復可能" はすべてのそれらのlib介在物後に発見されていないことになることができますか? Typescriptコンパイラは、tsconfig.jsonを無視しません。一部のオプションを変更すると、さまざまな出力が得られますが、エラーは発生しません。

私の環境は、Typescript Tools 2.4.1でVisual Studio 2015アップデート3です。 私はnpn @types(入力なし)を使用しています。 コンパイル出力の詳細は、Visual Studioが2.4.1バージョンを効果的に使用していることを示しています。

そして、最も奇妙なことは、gulpを使ってコンパイルすると、同じTypescriptバージョンとtsconfigを使用してエラーが発生しないということです。

+0

タイプ/ノード@インストール設定?一度私に起こった... – diopside

+1

はい。私は最終的にtypescriptをアップグレードせずにVS2017(私は当初は望んでいなかった)にジャンプしました。 –

答えて

1

プロジェクト全体ではなく、私の環境全体をアップグレードすることは、そのトリックでした。 私はVS2017にアップグレードしましたが、今はすべてが正常にコンパイルされます。

VS2015のほかにほとんどすべてを再インストールしましたが、おそらく私のインストールで破損していました。

ありがとうございました。

10

これは、ここで説明されているもの非常になります

https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16939

だから、どちらかが説明するように

"target": "es6" 

を使用してみてください - または何私たちのために動作します:

"target": "es5", 
"lib": ["es2016","dom"] 
+2

私はすでにこの記事に出会い、両方のソリューションを試しましたが、同じ結果につながりました。ところで、 "es6"は "es2015"と同じであるはずです。 –

0

更新:ゾル私のために配備の問題を引き起こしていました。より良い解決策は、node_modulesフォルダ内のすべてのファイルtsconfig.jsonをソリューションから除外することだけでした。 this Visual Studioの問題に関連しているようです。

同じバージョンのVisual StudioとTypeScriptで同様の問題が発生しました。 Visual Studioコードではすべてが期待どおりに機能していました。他の投稿された提案を無駄にしようとしました...それを修正した唯一の事は、私のプロジェクトからnode_modulesフォルダを除外することでしたが、ソリューションに残しました。

0

最近私の問題をGoogleで検索しても問題が解決しなかったので、この問題が解決しました。私はいくつかの掘削をしなければならなかったが、最終的に私は私のルートtypescriptファイルの先頭にES6定義ファイルをインクルードしなければならなかったことが判明:

///<reference path="./node_modules/typescript/lib/lib.es6.d.ts"/> 
12

「反復処理可能は」ノードのためのタイピングファイルに定義されています。問題を解決したファイルをインストールしてください(node_modules/@types/node/index.d.ts)。

NPMあなたはそれがそれらの一つ以上を上書きしているどこか他のアプリに冗長tsconfig.jsonまたはtsconfig.app.jsonファイルを持っていないあなたは必ず--save-devの

+1

これは私のために働く解決策でした。問題は、definitelytyped.orgのjQuery型ファイルの現在のバージョン(この記事の時点で)はNodeを参照する 'interface JQuery extends Iterable 'という行が含まれていますが、実際にはnode.d.tsの型定義を参照してください。 –

+0

@BradWestness、これがまさに理由でした。問題の根本的な原因を最終的に突き止めてくれてありがとう。 – Trygve

関連する問題