각도를 설치 한 후, 타이프 스크립트 컴파일러 킵은 발견하지에 대한 몇 가지 오류를 받고 Promise
, Map
, Set
와 Iterator
.
지금까지 나는 그것들을 무시했지만 지금 Promise
은 코드가 작동하도록 해야 합니다.
import {Component} from 'angular2/core';
@Component({
selector: 'greeting-cmp',
template: `<div>{{ asyncGreeting | async}}</div>`
})
export class GreetingCmp {
asyncGreeting: Promise<string> = new Promise(resolve => {
// after 1 second, the promise will resolve
window.setTimeout(() => resolve('hello'), 1000);
});
}
Additional information:
npm -v is 2.14.12
node -v is v4.3.1
typescript v is 1.6
오류 :
................ERROS OF MY CODE.................
C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
Error:(7, 20) TS2304: Cannot find name 'Promise'.
Error:(7, 42) TS2304: Cannot find name 'Promise'.
.........................................
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
Error:(77, 90) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
Error:(83, 60) TS2304: Cannot find name 'Promise'.
Error:(83, 146) TS2304: Cannot find name 'Promise'.
Error:(96, 51) TS2304: Cannot find name 'Promise'.
Error:(96, 147) TS2304: Cannot find name 'Promise'.
Error:(133, 90) TS2304: Cannot find name 'Promise'.
Error:(171, 81) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
Error:(3, 14) TS2304: Cannot find name 'Map'.
Error:(4, 42) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
Error:(14, 13) TS2304: Cannot find name 'Map'.
Error:(24, 17) TS2304: Cannot find name 'Map'.
Error:(25, 17) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
Error:(436, 103) TS2304: Cannot find name 'Map'.
Error:(436, 135) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
Error:(12, 50) TS2304: Cannot find name 'Promise'.
Error:(16, 41) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
Error:(108, 136) TS2304: Cannot find name 'Promise'.
Error:(156, 150) TS2304: Cannot find name 'Promise'.
Error:(197, 128) TS2304: Cannot find name 'Promise'.
Error:(203, 127) TS2304: Cannot find name 'Promise'.
Error:(204, 141) TS2304: Cannot find name 'Promise'.
Error:(205, 119) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
Error:(13, 13) TS2304: Cannot find name 'Map'.
Error:(14, 84) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
Error:(27, 33) TS2304: Cannot find name 'Promise'.
Error:(28, 45) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
Error:(1, 25) TS2304: Cannot find name 'MapConstructor'.
Error:(2, 25) TS2304: Cannot find name 'SetConstructor'.
Error:(4, 27) TS2304: Cannot find name 'Map'.
Error:(4, 39) TS2304: Cannot find name 'Map'.
Error:(7, 9) TS2304: Cannot find name 'Map'.
Error:(8, 30) TS2304: Cannot find name 'Map'.
Error:(11, 43) TS2304: Cannot find name 'Map'.
Error:(12, 27) TS2304: Cannot find name 'Map'.
Error:(14, 23) TS2304: Cannot find name 'Map'.
Error:(15, 25) TS2304: Cannot find name 'Map'.
Error:(95, 41) TS2304: Cannot find name 'Set'.
Error:(96, 22) TS2304: Cannot find name 'Set'.
Error:(97, 25) TS2304: Cannot find name 'Set'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
Error:(13, 17) TS2304: Cannot find name 'Map'.
Error:(14, 17) TS2304: Cannot find name 'Set'.
Error:(78, 59) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
Error:(2, 14) TS2304: Cannot find name 'Promise'.
Error:(7, 32) TS2304: Cannot find name 'Promise'.
Error:(8, 38) TS2304: Cannot find name 'Promise'.
Error:(9, 35) TS2304: Cannot find name 'Promise'.
Error:(9, 93) TS2304: Cannot find name 'Promise'.
Error:(10, 34) TS2304: Cannot find name 'Promise'.
Error:(11, 32) TS2304: Cannot find name 'Promise'.
Error:(11, 149) TS2304: Cannot find name 'Promise'.
Error:(12, 43) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
Error:(43, 59) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
Error:(11, 16) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
Error:(75, 33) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
Error:(85, 42) TS2304: Cannot find name 'Map'.
C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
Error:(35, 67) TS2304: Cannot find name 'Promise'.
Error:(50, 66) TS2304: Cannot find name 'Promise'.
Error:(89, 67) TS2304: Cannot find name 'Promise'.
Error:(94, 38) TS2304: Cannot find name 'Promise'.
Error:(94, 50) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
Error:(46, 62) TS2304: Cannot find name 'Promise'.
Error:(47, 42) TS2304: Cannot find name 'Iterator'.
Error:(103, 74) TS2304: Cannot find name 'Promise'.
Error:(103, 84) TS2304: Cannot find name 'Promise'.
Error:(143, 66) TS2304: Cannot find name 'Promise'.
Error:(158, 65) TS2304: Cannot find name 'Promise'.
Error:(201, 66) TS2304: Cannot find name 'Promise'.
Error:(206, 38) TS2304: Cannot find name 'Promise'.
Error:(206, 50) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
Error:(6, 50) TS2304: Cannot find name 'Promise'.
Error:(7, 58) TS2304: Cannot find name 'Promise'.
C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
Error:(7, 38) TS2304: Cannot find name 'Promise'.
Error:(7, 51) TS2304: Cannot find name 'Iterator'.
C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiseObservable.d.ts
Error:(9, 31) TS2304: Cannot find name 'Promise'.
Error:(10, 26) TS2304: Cannot find name 'Promise'.
답변
타입 스크립트가있는 각도 5 ^ 2.0.0
이전 버전의 Angular 2 이상에서도 동일하게 작동합니다.
이것을 typescript 2.0.0과 함께 사용하려면 다음을 수행하십시오.
npm install --save-dev @types/core-js
tsconfig.json
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"noEmitOnError": true,
"noImplicitAny": false,
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
],
"types": [
"core-js"
]
}
typescript 2.0.0을 사용한 @types에 대한 추가 정보.
- https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
- https://www.npmjs.com/~types
설치 예 :
npm install --save-dev @types/core-js
식별자 오류 중복
중복 된 ecmascript 6 타이핑을 이미 다른 es6-shim 어딘가에서 가져 오기 때문에 가능합니다.
typings.d.ts
에 대한 참조가 없는지 다시 확인하십시오 es6
. es6
타이핑 디렉토리에서 참조를 제거하십시오 (있는 경우).
예를 들어 :
이는 types:['core-js']
typings.json 과 충돌 합니다.
{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160602141332"
// es6-shim will also conflict
}
}
core-js
유형 배열을 포함하여 tsconfig.json
가져 오는 유일한 장소 여야합니다.
앵귤러 CLI 1.0.0-beta.30
Angular-CLI를 사용하는 경우에서 lib 배열을 제거하십시오 typings.json
. 이것은 유형에서 core-js를 선언하는 것과 충돌하는 것 같습니다.
"compilerOptions" : {
...
// removed "lib": ["es6", dom"],
...
},
"types" : ["core-js"]
Angular CLI를 사용하는 Webstorm / Intellij 사용자
내장 타입 스크립트 컴파일러가 비활성화되어 있는지 확인하십시오. CLI와 충돌합니다. CLI를 사용하여 타이프 스크립트를 컴파일하려면 ng serve
구성을 설정할 수 있습니다.
tsconfig 컴파일러 옵션 lib 대 유형
핵심 js 유형 정의를 설치하지 않으려는 경우 typescript에 포함 된 일부 es6 라이브러리가 있습니다. 그것들은 lib: []
tsconfig 의 속성을 통해 사용됩니다 .
예를 들어 여기를 참조하십시오 : https://www.typescriptlang.org/docs/handbook/compiler-options.html
참고 : –lib를 지정하지 않으면 기본 라이브러리가 주입됩니다. 주입 된 기본 라이브러리는 다음과 같습니다. ► –target ES5의 경우 : DOM, ES5, ScriptHost ► –target ES6의 경우 : DOM, ES6, DOM.Iterable, ScriptHost
tl; dr
짧은 대답 "lib": [ "es6", "dom" ]
또는 "types": ["core-js"]
해결하는 데 사용할 수 있습니다 can't find Promise,Map, Set and Iterator
. 그러나 둘 다 사용하면 중복 식별자 오류가 발생합니다.
답변
코드에서 Promise 개체를 만들려고 할 때도 같은 문제 ( “Promise not found”)가 있습니다.
System.js (System.js)를 작성하여 index.html에 포함시키는 System.config ({…})를 포함하여 stackoverflow에서 찾은 솔루션을 시도했습니다.
마침내 나는 문제를 해결했다. 문제는 index.html에 es6-shim.min.js가 포함되어 있다는 것입니다. 그러나 tsconfig.json에서 “compilerOptions”아래의 “target”특성 값은 “es5″입니다. “es6″으로 변경하면 오류가 사라집니다.
답변
앵귤러 2 파이널
-es5 지원 (TS 2.0.0 이상에서 완벽하게 작동)
갱신 당 es6-shim
이 모두 typings가 함께 설치되어있는 경우, 현재 지원되지 않습니다 es6-shim
및 core-js
함께. es6-shim
tsconfig.json에서 언급하여 입력을 제거하십시오 . 내부 지원 core-js
을 es5
위해 아래 입력을 참조 할 수 있습니다.main.ts
///<reference path="./../typings/globals/core-js/index.d.ts"/>
tsconfig.json
exclude: [
"node_modules", //<-- this would be needed in case of VS2015
"node_modules/@typings",
"typings"
]
-es6 지원
"target"
속성을 로 설정 es6
하면 모든 오류가 사라집니다. 그리고 변환 된 코드는 es6
형식이됩니다.
답변
angular-2.0.0-rc.4에서 업데이트되었습니다.
TLDR;
-
es6로 변환
- 오류가 사라집니다 (일부 문제가 있음).
-
es5로 변환
- 타이핑 설치
- es6 심을 설치하십시오
- 코드로 컴파일하십시오.
- 오류가 사라집니다.
독자들을 위해 :
옵션 1 : es6 또는 es2015로 변환
tsconfig.json :
{
"compilerOptions": {
"target": "es6",
"module": "system",
"moduleResolution": "node",
...
},
"exclude": [
"node_modules",
"jspm_packages"
]
}
마음에 계속 순간에 ES6 지원하지 않습니다 uglifyjs . 이는 프로덕션 번들 작성에 영향을 줄 수 있습니다.
옵션 2 : es5로 변환하고 타이핑을 설치 한 다음 es6-shim을 설치하십시오.
tsconfig.json :
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
...
},
"exclude": [
"node_modules",
"jspm_packages"
]
}
타이핑을 설치 한 다음 es6-shim을 설치하십시오.
npm install typings --saveDev
typings install dt~es6-shim --global --save
이 경로를 사용하면 형식 스크립트 컴파일러가 .d.ts 파일을 찾을 수 있는지 확인해야합니다.
두 가지 옵션이 있습니다.
ㅏ. tsconfig.json이 입력 폴더와 동일한 레벨인지 확인하십시오.
비. angular2 애플리케이션이 부트 스트랩되는 main.ts 파일에 참조를 포함하십시오.
옵션 A : tsconfig.json이 입력 폴더와 동일한 레벨인지 확인하십시오.
참고 : 타이핑 폴더를 제외시키기 위해 제외 플래그를 사용하지 마십시오.
project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json
옵션 B : 부트 스트랩 이전의 주 파일 참조 (이 작업을 수행하지 마십시오) :
다른 답변에서 볼 수 있듯이이 파일은 더 이상 Angular에 포함되지 않습니다
main.ts :
/// <reference path="../../typings/globals/es6-shim/index.d.ts" />
답변
Typescript> = 2 인 경우 tsconfig.json의 “lib”옵션이 작업을 수행합니다. 타이핑이 필요 없습니다. https://www.typescriptlang.org/docs/handbook/compiler-options.html
{
"compilerOptions": {
"target": "es5",
"lib": ["es2016", "dom"] //or es6 instead of es2016(es7)
}
}
답변
이것이 나를 위해 일한 것입니다.
typings.json
파일 이 있는지 확인 하고
이렇게 생겼어요
{ "globalDependencies": { "core-js": "registry:dt/core-js#0.0.0+20160317120654", "jasmine": "registry:dt/jasmine#2.2.0+20160505161446", "node": "registry:dt/node#6.0.0+20160613154055" } }
타이핑 패키지를 전체적으로 설치하십시오.
sudo npm install -g typings
설치 한 후 typings를 실행
typings install
그런 다음 서버를 다시 시작하십시오.
답변
Promise.resolve () 메서드를 인식하지 못하는 비슷한 문제가있었습니다 . 나는 변경 “대상” 에 ES5에서 값을 ES6 에 tsconfig.json . 문제가 해결되었습니다.
도움이 되었기를 바랍니다.