wonderful world
wonderful world

Reputation: 11599

Cannot find global type 'IterableIterator' with Typescript 1.7.5

I installed NPM version of Typescript 1.7.5 and angular2 beta. While building the project in Visual Studio 2015 Update 1, I get this errors:

1>VSTSC : error TS2318: Build: Cannot find global type 'Iterable'.
1>VSTSC : error TS2318: Build: Cannot find global type 'IterableIterator'.
1>VSTSC : error TS2318: Build: Cannot find global type 'Symbol'.
1>VSTSC : error TS2468: Build: Cannot find global value 'Symbol'.

My tsconfig.json file is this:

{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "es6",
    "module": "system",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noLib": false
  },
  "exclude": [
    "node_modules",
    "wwwroot",
    "bower_components"
  ],
  "files": [
    "node_modules/angular2/typings/tsd.d.ts",
    "node_modules/angular2/typings/zone/zone.d.ts",
    "node_modules/angular2/core.d.ts",
    "node_modules/typescript/lib/lib.d.ts"
  ]
}

How to fix this error?

UPDATE:

I tried Martin Vseticka's answer. I get the following errors:

1>C:\Test\node_modules\angular2\src\facade\lang.d.ts(2,22): error TS2304: Build: Cannot find name 'BrowserNodeGlobal'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(6,14): error TS2300: Build: Duplicate identifier 'PropertyKey'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(9,5): error TS2300: Build: Duplicate identifier 'done'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(10,5): error TS2300: Build: Duplicate identifier 'value'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(248,5): error TS2300: Build: Duplicate identifier 'EPSILON'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(283,5): error TS2300: Build: Duplicate identifier 'MAX_SAFE_INTEGER'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(290,5): error TS2300: Build: Duplicate identifier 'MIN_SAFE_INTEGER'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(346,5): error TS2300: Build: Duplicate identifier 'flags'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(498,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(561,5): error TS2300: Build: Duplicate identifier 'size'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(570,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(581,5): error TS2300: Build: Duplicate identifier 'size'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(590,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(605,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(619,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(3841,14): error TS2300: Build: Duplicate identifier 'PropertyKey'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4061,5): error TS2300: Build: Duplicate identifier 'EPSILON'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4096,5): error TS2300: Build: Duplicate identifier 'MAX_SAFE_INTEGER'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4103,5): error TS2300: Build: Duplicate identifier 'MIN_SAFE_INTEGER'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4389,5): error TS2300: Build: Duplicate identifier 'done'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4390,5): error TS2300: Build: Duplicate identifier 'value'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4619,5): error TS2300: Build: Duplicate identifier 'flags'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4647,5): error TS2300: Build: Duplicate identifier 'size'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4657,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4674,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4686,5): error TS2300: Build: Duplicate identifier 'size'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4696,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(4712,5): error TS2300: Build: Duplicate identifier 'prototype'.
1>C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.7\lib.es6.d.ts(5099,5): error TS2300: Build: Duplicate identifier 'prototype'.

When I tried David Sherrit's answer, I get 14175 errors. The errors start with:

1>C:\Test\node_modules\angular2\src\facade\lang.d.ts(2,22): error TS2304: Build: Cannot find name 'BrowserNodeGlobal'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(6,14): error TS2300: Build: Duplicate identifier 'PropertyKey'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(9,5): error TS2300: Build: Duplicate identifier 'done'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(10,5): error TS2300: Build: Duplicate identifier 'value'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(248,5): error TS2300: Build: Duplicate identifier 'EPSILON'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(283,5): error TS2300: Build: Duplicate identifier 'MAX_SAFE_INTEGER'.
1>C:\Test\node_modules\angular2\typings\es6-shim\es6-shim.d.ts(290,5): error TS2300: Build: Duplicate identifier 'MIN_SAFE_INTEGER'.

UPDATE:

I tried this:

{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": true,
    "sourceMap": true,
    "target": "es6",
    "module": "system",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "noLib": false
  },
  "exclude": [
    "node_modules",
    "wwwroot",
    "bower_components"
  ],
  "files": [
    "node_modules/angular2/core.d.ts",
    "node_modules/typescript/lib/lib.d.ts",
    "node_modules/typescript/lib/lib.es6.d.ts"
  ]
}

But still getting around 14162 errors which is primarily about duplicates. Turning the noLib to true did not help.

Upvotes: 1

Views: 5426

Answers (2)

David Sherret
David Sherret

Reputation: 106590

Usually when noLib is set to true and target is set to es6 it will include lib.es6.d.ts in addition to lib.d.ts. lib.es6.d.ts holds the definitions specific to ES6.

However, you are including lib.d.ts, which has this statement at the top of that file:

/// <reference no-default-lib="true"/>

This overrides your tsconfig.json option and sets noLib to true; therefore, it doesn't include lib.es6.d.ts. This explains your errors.

If you want to continue using the definition files from node_modules/typescript/..., then you need to include lib.es6.d.ts as well:

"files": [
    "node_modules/angular2/typings/tsd.d.ts",
    "node_modules/angular2/typings/zone/zone.d.ts",
    "node_modules/angular2/core.d.ts",
    "node_modules/typescript/lib/lib.d.ts",
    "node_modules/typescript/lib/lib.es6.d.ts"
]

Otherwise, follow Martin's answer by keeping noLib as false and remove the reference to lib.d.ts in the list of files.

Upvotes: 1

MartyIX
MartyIX

Reputation: 28648

You seem to add lib.d.ts twice because you use noLib and you specifically add node_modules/typescript/lib/lib.d.ts in files.

I would just remove "node_modules/typescript/lib/lib.d.ts" path.

There is also an issue with similar errors as you get: https://github.com/Microsoft/TypeScript/issues/5504

Upvotes: 1

Related Questions