Sudut: Tidak dapat menemukan Janji, Peta, Set dan Iterator

176

Setelah menginstal sudut, yang Naskah yang diketik compiler keep mendapatkan beberapa kesalahan tentang tidak menemukan Promise, Map, Setdan Iterator.

Sampai sekarang saya mengabaikan mereka tetapi sekarang saya perlu Promiseagar kode saya dapat bekerja.

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

Kesalahan:

................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'.
Stav Alfi
sumber
1
Instal versi terbaru dari TypeScript untuk Visual Studio 2015 .
mylesk

Jawaban:

177

Sudut 5 dengan Tulisan ^ 2.0.0

Ini juga harus bekerja sama dengan versi Angular 2+ sebelumnya.

Agar ini berfungsi dengan naskah 2.0.0, saya melakukan hal berikut.

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"
    ]
  }

Lebih lanjut tentang @type dengan naskah 2.0.0.

  1. https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
  2. https://www.npmjs.com/~types

Instal Contoh:

npm install --save-dev @types/core-js

Kesalahan Pengidentifikasi Gandakan

Ini kemungkinan besar karena duplikat ecmascript 6 typing sudah diimpor dari tempat lain kemungkinan besar es6-shim lama.

Periksa kembali typings.d.tspastikan tidak ada referensi es6. Hapus referensi apa pun es6dari dari direktori pengetikan Anda jika ada.

Sebagai contoh:

Ini akan bertentangan dengan types:['core-js']di typings.json.

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332" 
    // es6-shim will also conflict
  }
}

Termasuk core-jsdalam array jenis di tsconfig.jsonharus menjadi satu-satunya tempat itu diimpor.

CLI sudut 1.0.0-beta.30

Jika Anda menggunakan Angular-CLI, hapus lib array di typings.json. Ini tampaknya bertentangan dengan mendeklarasikan core-js dalam tipe.

"compilerOptions" : {
  ...
  // removed "lib": ["es6", dom"],
  ...
},
"types" : ["core-js"]

Pengguna Webstorm / Intellij menggunakan Angular CLI

Pastikan kompilator naskah bawaan dinonaktifkan. Ini akan bertentangan dengan CLI. Untuk mengkompilasi naskah Anda dengan CLI, Anda dapat mengatur ng servekonfigurasi.

masukkan deskripsi gambar di sini

Jenis compilerOptions lib vs jenis

Jika Anda memilih untuk tidak menginstal definisi tipe js inti ada beberapa pustaka es6 yang disertakan dengan naskah. Itu digunakan melalui lib: []properti di tsconfig.

Lihat di sini misalnya: https://www.typescriptlang.org/docs/handbook/compiler-options.html

Catatan: Jika --lib tidak ditentukan pustaka default disuntikkan. Pustaka default yang disuntikkan adalah: ► Untuk --target ES5: DOM, ES5, ScriptHost ► Untuk --target ES6: DOM, ES6, DOM.Iterable, ScriptHost

tl; dr

Jawaban singkat baik "lib": [ "es6", "dom" ]atau "types": ["core-js"]dapat digunakan untuk menyelesaikan can't find Promise,Map, Set and Iterator. Namun menggunakan keduanya akan menyebabkan kesalahan pengidentifikasi duplikat.

Kris Hollenbeck
sumber
1
Terima kasih atas pembaruan dan jawaban yang bagus. Saya menerima jawaban Anda karena orang-orang masih datang ke sini untuk menghilangkan kesalahan ini sampai sekarang. Apakah ada kemungkinan Anda memperbarui jawaban Anda ke RC 5? Saya menghadapi kesalahan ini dan dengan mengikuti jawaban Anda, saya bisa menggunakan janji tetapi sekarang ada banyak kesalahan dari node_modules \ @types \ es6-shim \ index.d.ts file: "Duplicate identifier 'PropertyKey'." dalam baris: 6,10.248.283.290 dan seterusnya; .. juga kesalahan di: C: \ Users \ armyTik \ Desktop \ rc5 \ store-app-02 \ node_modules \ typescript \ lib \ lib.es2015.core.d.ts: 17 : 13 Pengidentifikasi duplikat 'PropertyKey'.
Stav Alfi
Saya memperbarui jawaban saya. Semoga itu membantu membersihkan sedikit. Ini harus sama untuk RC5 dan RC4 saya percaya.
Kris Hollenbeck
Saya juga mengubahnya untuk mencerminkan inti-js sehingga mudah-mudahan kurang membingungkan. core-js dan es6 keduanya untuk deklarasi tipe es6 spesifik. Saya lebih suka core-js karena sepertinya lebih dari es6-shim.
Kris Hollenbeck
Terima kasih atas pembaruannya. Saya tidak beruntung kali ini. Saya memperbarui kesalahan saya saat ini.
Stav Alfi
2
Mungkin, lib adalah solusi yang lebih baik. github.com/angular/angular/blob/…
Alex
75

Saya juga memiliki masalah yang sama - "Janji tidak ditemukan" - ketika kode ingin membuat objek Janji.

Mencoba beberapa solusi yang ditemukan di stackoverflow, termasuk yang mengeluarkan System.config ({...}) untuk membentuk system.js dan memasukkannya ke dalam index.html.

Akhirnya saya memecahkan masalah. Masalahnya adalah bahwa, dalam index.html, es6-shim.min.js disertakan. Namun, di tsconfig.json, properti "target" di bawah "compilerOptions" memiliki nilai "es5". Setelah saya mengubahnya ke "es6", kesalahan hilang.

Daniel C. Deng
sumber
2
Ini masalah bagi saya juga. Adakah yang tahu mengapa ini menyebabkan kesalahan itu?
Nick Brady
Memperbaiki juga kesalahan yang saya terima di IntelliJ IDEA / WebStorm
bentolor
5
Tetapi kode js harus diubah ke es5 karena tidak semua browser siap untuk es6. Adakah yang punya masalah es6 di browser yang berbeda. Terima kasih!
bmnepali
bekerja untuk saya di angular2.1.0. compiler 2.1.0 core 2.1.0 common2.1.0 rxjs5.0.0-beta.12 platform-browser2.1.0
farhad goodarzi
Terima kasih! Anda menghemat banyak waktu
Cristian Traìna
63

Final 2 Sudut

- Dukungan es5 (Bekerja sempurna dengan TS 2.0.0 +)

Per pembaruan es6-shimtidak didukung sekarang, jika Anda memiliki kedua pengetikan yang diinstal bersama es6-shim& core-jsbersama. Hapus es6-shimpengetikan dengan menyebutkan di tsconfig.json. Anda sekarang dapat merujuk core-jsmengetik di bawah untuk es5dukungan di dalamnyamain.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"
]

- Dukungan es6

Anda hanya perlu mengatur "target"properti es6, maka semua kesalahan akan hilang. Dan kode yang ditranskrip akan dalam es6format.

Pankaj Parkar
sumber
Terima kasih banyak. Saya tidak punya kesempatan untuk menemukannya sendiri.
Stav Alfi
@StavAlfi np .. itu terjadi .. Senang membantu Anda .. Terima kasih :)
Pankaj Parkar
Dengan beta.7 itu harus diinstal jika Anda menggunakan pengaturan proyek dalam tutorial quickstart. Beta Angular manakah yang Anda gunakan? Saya mengkonfirmasi perubahan yang melanggar dengan sudut 2.0.0 beta.7
Marc
1
Package.json di tutorial quickstart mendukung versi aktual angular 2. Jika Anda menyalin package.json. tscconfig.json dan typings.json ke dir root proyek Anda dan panggil npm-install setup proyek akan baik-baik saja.
Marc
3
@PankajParkar 2.0.0-rc.1. Saya hanya mulai menggunakan Angular beberapa hari yang lalu saya bekerja meskipun dokumen yang memulai [di sini] (). Di package.jsonmereka menempatkan "angular2-in-memory-web-api": "0.0.7"dan sisanya dari hal-hal sudut berasal dari "@angular/<module>": "2.0.0-rc.1"mana <module>adalah common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecateddan upgrade.
Hector
42

Diperbarui pada angular-2.0.0-rc.4

TLDR;

  1. Transpile ke es6

    • kesalahan hilang (dengan beberapa gotcha).
  2. Transpile ke es5

    • pasang pengetikan
    • instal shim es6
    • pastikan kompilasi dengan kode Anda.
    • kesalahan hilang.

Untuk pembaca:

Opsi 1: Transpile ke es6 atau es2015

tsconfig.json:

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

Ingatlah bahwa uglifyjs tidak mendukung es6 saat ini . Ini dapat memengaruhi Anda membuat bundel produksi.

Opsi 2: Transpile ke es5, instal pengetikan, lalu instal es6-shim:

tsconfig.json:

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

Instal pengetikan, lalu instal es6-shim:

npm install typings --saveDev
typings install dt~es6-shim --global --save

Jika Anda menggunakan rute ini, Anda perlu memastikan bahwa kompiler naskah dapat menemukan file .d.ts.

Anda memiliki dua opsi:

Sebuah. Pastikan tsconfig.json Anda berada di level yang sama dengan folder pengetikan.

b. Sertakan referensi dalam file main.ts Anda di mana aplikasi angular2 Anda dibooting.

Opsi A: Pastikan tsconfig.json Anda berada di level yang sama dengan folder pengetikan.

Catatan: JANGAN gunakan bendera kecualikan untuk mengecualikan folder pengetikan.

project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json

Opsi B: Referensi dalam file utama sebelum bootstrap (Jangan lakukan ini):

Seperti yang ditunjukkan dalam jawaban lain, file ini tidak lagi disertakan oleh Angular

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />
Nick Acosta
sumber
2
Opsi 1 bekerja dengan sangat baik untuk RC4. Pastikan untuk menghapus core-js dan pengetikan lainnya yang menyediakan Janji, Peta, dll. Untuk menghindari konflik namespace.
wtfzn
1
Terima kasih, saya berhasil. Perlu baik core-js atau es6-shim (tidak keduanya). Dan kemudian sertakan ./typings/index.d.ts dalam proses kompilasi ts.
k3a
1
--saveDevtidak berfungsi untuk saat ini. --save-devtidak.
George Sovetov
1
Bukankah typingsseharusnya dipasang secara global?
George Sovetov
8

Inilah yang bekerja untuk saya.

periksa apakah ada typings.jsonfile,

Itu terlihat seperti ini,

{
  "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"
  }
}

Instal paket pengetikan secara global.

sudo npm install -g typings

setelah menginstal pengetikan , jalankan

typings install

kemudian restart server.

Semuanya
sumber
6

Saya memiliki masalah serupa di mana ia tidak mengenali metode Promise.resolve () . Saya mengubah nilai "target" dari ES5 ke ES6 di tsconfig.json . Itu memecahkan masalah.

Semoga ini membantu.

Nandakumar Purohit
sumber
Ya ini membantu saya pasti - mengubah nilai "target" dari ES5 ke ES6 di tsconfig.json.
Greg Trevellick
5

Karena Angular 2 pergi ke RC 0, /angular2/typings/browser.d.ts tidak lagi menjadi bagian dari distribusi Angular 2. File dapat diinstal secara terpisah.

Dari sini: https://github.com/angular/angular/issues/8513 ada beberapa opsi. Salah satu yang bekerja untuk saya adalah:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />
James
sumber
1
Terima kasih untuk ini, tetapi perintah untuk mengetik 1.0+ adalah: mengetik install dt ~ es6-shim --save --global ( github.com/typings/typings/issues/517 ) dan kemudian gunakan /// <reference path = " mengetik / es6-shim / es6-shim.d.ts "/>
Simon Trewhella
4

Saya berhasil memperbaiki masalah ini tanpa harus menambahkan referensi triple-slash ke file TS bootstrap, ubah ke ES6 (yang membawa banyak masalah, seperti yang dikatakan @DatBoi ) memperbarui VS2015 NodeJSdan / atau NPMbundle builds atau instal typingssecara global.

Inilah yang saya lakukan dalam beberapa langkah:

  • ditambahkan typingsdalam file proyek package.json.
  • menambahkan scriptblok dalam package.jsonfile untuk menjalankan / memperbarui typingssetelah setiap tindakan NPM.
  • menambahkan typings.jsonfile di folder root proyek yang berisi referensi core-js, yang merupakan salah satu paket shim / polyfill terbaik di luar sana saat ini untuk memperbaiki masalah ES5 / ES6.

Begini tampilannya package.jsonfile (hanya baris yang relevan):

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

Dan inilah typings.jsonfilenya:

{
  "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"
  }
}

( Jasminedan Nodetidak diperlukan, tapi saya sarankan untuk menyimpannya jika Anda perlu di masa depan).

Perbaikan ini bekerja dengan baik dengan Angular2 RC1 ke RC4, yang merupakan apa yang saya butuhkan, tapi saya pikir itu juga akan memperbaiki masalah serupa dengan paket pustaka berkemampuan ES6 lainnya.

AFAIK, saya pikir ini adalah cara paling bersih untuk memperbaikinya tanpa mengacaukan pengaturan default VS2015.

Untuk info lebih lanjut dan analisis rinci masalah ini, saya juga menyarankan untuk membaca posting ini di blog saya.

Darkseal
sumber
3

Jika menggunakan Angular2 RC1 dengan mengetikkan v1.0 + gunakan perintah:

typings install dt~core-js --save --global

untuk menginstal definisi core-js dan kemudian merujuk indeks global Anda di main.ts Anda:

/// <reference path="../../../typings/index.d.ts" />

Jika menggunakan es6-shim atau perpustakaan shim lainnya, instal pengetikan untuk itu

Lihat https://github.com/typings/typings/issues/517

Simon Trewhella
sumber
2

Saya perhatikan masalah ini muncul setelah memutakhirkan dari Angular 5 ke Angular 6. Saya bisa memperbaiki ini dengan melakukan hal berikut di VS2017:

  • Pastikan TypeScript SDK diinstal (melalui Visual Studio Installer) untuk versi khusus saya dari TypeScript, 2.9
  • Pastikan properti proyek Module System diatur agar sesuai dengan yang ada di tsconfig.json saya: ES2015. Ini sering disinkronkan secara otomatis jika file tsconfig ada di root proyek. Namun, karena saya menggunakan template VS Angular, ia menempatkan file-file ini dalam subfolder "ClientApp", dan properti proyek System Module tidak diatur.

Properti Proyek VS2017

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": "./"
  }
}
dasch88
sumber
1

Saya memiliki masalah yang sama ketika membuat objek janji di dalam kelas saya. Dengan mengubah nama target menjadi "es5" dari "es6" menyelesaikan masalah saya.

CharithW
sumber
1

Solusi lain yang mungkin adalah menginstal ulang pengetikan:
Ini cocok untuk saya"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. Hapus typingsdirektori dari proyek (Direktori dimana modul pengetikan diinstal)
  5. typings install
  6. npm run
Vicky Gonsalves
sumber
1

Solusi lain yang bagus. Anda perlu membuat file typings.json di direktori root proyek dengan konten:

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

Kemudian instal paket pengetikan global atau lokal, jika tidak diinstal (saya menginstalnya secara global):

sudo npm install --global typings

Dalam perintah jalankan direktori root proyek:

typings install

Setelah itu masalah terpecahkan. Tidak perlu mengubah target tsconfig ke es6 atau es7. Aplikasi web Anda tidak mendukung setelah itu beberapa versi browser lama.

Alexey Nikitenko
sumber
1

Jika Anda datang ke sini karena Anda melihat kesalahan ini di Visual Studio 2017 maka Anda memiliki masalah yang berbeda seperti di atas, jika Anda berhasil menyusun. Ini karena layanan bahasa tidak memilih tsconfig.json Anda.

https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html

Anda harus mengatur Build Action tsconfig.json Anda menjadi "Content" (Klik kanan -> Properties), lalu VS akan mengambilnya.

Pieter Van Winckel
sumber
0

Saya menemukan referensi di boot.ts bukan jalan yang benar. Memperbarui jalur itu untuk /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />menyelesaikan kesalahan Janji.

dawesome
sumber
0

Saya berlatih dengan tutorial angular2 (pahlawan).
Setelah menginstal @ types / core-js yang dikomentari dalam jawaban tesis ini, saya mendapatkan kesalahan "Duplicate identifier".
Dalam kasus saya, itu diselesaikan sebagai menghapus garis lib di tsconfig.json.

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

coffeenjava
sumber
-1

struktur file saya adalah sebagai berikut:

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

rekatkan di bawah ini ke bagian atas app.ts Anda dan masalah Anda terpecahkan

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
Matey Aryeh
sumber
Mengubah entri TARGET untuk menunjuk ke ES6 di tsconfig.json memperbaiki masalah ini untuk saya seperti yang ditunjukkan dalam beberapa balasan di atas.
TheCopyPaster
-1

Saya mendapatkan masalah yang sama, dan dapat menemukannya di github https://github.com/angular/angular-cli/issues/1901 , yang menyatakan bahwa itu merupakan masalah [email protected].

Turunkan naskah ke 2.0.0global dan lokal membantu saya untuk menyelesaikannya.

Secara global:

npm uninstall typescript -g
npm cache clean
npm install typescript@2.0.0 -g

Lokal: PERGI ke folder proyek yang Anda buat dengan ng baru

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

Saya juga mengubah versi naskah dalam package.json dari ^2.0.0menjadi 2.0.0, tetapi tidak berfungsi sampai saya menurunkan versi instalasi naskah lokal.

perahu air
sumber
Mengapa orang downvoting ini, saya ingin tahu mengapa ini adalah ide yang buruk. Jika naskah adalah bahasa yang dialihkan dan dikonversi ke javascript, itu hanya seaman browser Anda sehingga tidak seperti ada risiko, kan?
user3505901