angular typescript란 typescript - 각도 : Promise, Map, Set 및 Iterator를 찾을 수 없습니다.



9 Answers

나는 또한 Promise 객체를 생성하고자 할 때 "Promise not found"라는 동일한 문제를 가지고있다.

System.config ({...})를 꺼내서 system.js를 만들고 index.html에 포함 시키려면 stackoverflow에서 찾은 일부 솔루션을 사용해보십시오.

마지막으로 나는이 문제를 해결했다. 문제는 index.html에서 es6-shim.min.js가 포함되어 있다는 것입니다. 그러나 tsconfig.json에서 "compilerOptions"아래의 "target"속성 값은 "es5"입니다. "es6"으로 변경 한 후 오류가 사라졌습니다.

튜토리얼 compile angular2

Angular를 설치 한 후 Typescript 컴파일러는 Promise , Map , SetIterator 찾지 못하는 것에 대한 오류를 계속 발생시킵니다.

지금까지 나는 그들을 무시했지만 지금은 코드가 작동 할 수 있도록 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'.



angular-2.0.0-rc.4에서 업데이트 됨

TLDR;

  1. es6로 전송

    • 오류가 사라집니다 (w / some gotchas).
  2. es5로 전송

    • 타이핑을 설치하다
    • es6 shim을 설치하십시오.
    • 코드로 컴파일되었는지 확인하십시오.
    • 오류가 사라집니다.

독자들에게 :

옵션 1 : es6 또는 es2015로 전송

tsconfig.json :

{
  "compilerOptions": {
    "target": "es6",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
"exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

uglifyjs는 현재 es6을 지원하지 않는다는 것을 명심하십시오. 이로 인해 제작 번들 제작에 영향을 미칠 수 있습니다.

옵션 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

이 경로를 간다면 typescript 컴파일러가 .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" />






각도 2가 RC 0에 이르기까지, /angular2/typings/browser.d.ts는 더 이상 각도 2 분포의 일부가 아닙니다. 이 파일은 별도로 설치할 수 있습니다.

여기에서 : https://github.com/angular/angular/issues/8513 몇 가지 옵션이 있습니다. 나를 위해 일한 것은 :

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />



TS 부트 스트랩 파일에 트리플 슬래시 참조를 추가하지 share 문제를 해결할 수 share 으로 share VS2015의 NodeJS 및 / 또는 NPM 번들 빌드를 업데이트하거나 입력을 설치할 수 있습니다 ( typings 에서 말한 것처럼 여러 가지 문제가 발생합니다). 전 세계적으로

다음은 몇 단계로 수행 한 작업입니다.

  • 프로젝트의 package.json 파일에 typings 을 추가 typings .
  • 각 NPM 작업 후에 입력을 실행 / 업데이트하기 위해 package.json 파일에 script 블록을 추가했습니다.
  • 프로젝트의 루트 폴더에 core-js 대한 참조를 포함하는 typings.json 파일이 추가되었습니다. core-js 는 현재 ES5 / ES6 문제를 해결할 수있는 최상의 shim / polyfill 패키지 중 하나입니다.

package.json 파일의 모양은 다음과 같습니다 (관련 행만).

{
  "version": "1.0.0",
  "name": "YourProject",
  "private": true,
  "dependencies": {
    ...
    "typings": "^1.3.2",
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
      "postinstall": "typings install"
  }
}

그리고 여기에 typings.json 있습니다 typings.json 파일 :

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

( JasmineNode 는 필수는 아니지만 나중에 필요할 경우를 대비하여 보관하는 것이 좋습니다).

이 수정 프로그램은 Angular2 RC1에서 RC4로 잘 작동하고 있지만 다른 ES6 사용 라이브러리 패키지와 유사한 문제도 해결할 것입니다.

AFAIK,이게 VS2015 기본 설정을 엉망으로 만들지 않고도 해결할 수있는 가장 깨끗한 방법이라고 생각합니다.

문제에 대한 자세한 정보와 자세한 분석을 보려면 블로그 에서이 게시물읽는 것이 좋습니다.




또 다른 가능한 해결책은 입력을 다시 설치하는 것입니다.
이 작품은 나를 위해 "angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. 프로젝트에서 typings 디렉토리 삭제 (타이핑 모듈이 설치된 디렉토리)
  5. typings install
  6. npm run



Angular 5에서 Angular 6으로 업그레이드 한 후 이러한 문제가 나타났습니다. VS2017에서 다음을 수행하여이 문제를 해결할 수있었습니다.

  • 내 특정 버전의 TypeScript 용 TypeScript SDK (Visual Studio Installer를 통해)가 설치되어 있는지 확인하십시오. 2.9
  • 모듈 시스템 프로젝트 등록 정보가 내 tsconfig.json : ES2015와 일치하도록 설정하십시오. tsconfig 파일이 프로젝트의 루트에 있으면 자동으로 동기화됩니다. 그러나 VS Angular 템플릿을 사용하기 때문에이 파일을 "ClientApp"하위 폴더에 배치하고 Module System 프로젝트 속성을 설정하지 않았습니다.

tsconfig.json :

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "lib": [
      "es2017",
      "dom"
    ],
    "module": "es2015",
    "baseUrl": "./"
  }
}



angular2 튜토리얼 (영웅)을 배우고 있습니다.
이 답변에 @ types / core-js를 설치 한 후 "Duplicate identifier"오류가 발생했습니다.
필자의 경우 tsconfig.json에서 lib 행을 제거하는 것으로 해결되었습니다.

// "lib": [ "es2015", "dom"]




내 파일 구조는 다음과 같습니다.

project
 |--node-modules
 |   |--angular2
 |   |   |--typings
 |   |   |   |--browser.d.ts
 |--src
 |--app.ts

app.ts 상단에 아래를 붙여 넣으면 문제가 해결됩니다.

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />



Related