Setelah menginstal sudut, yang Naskah yang diketik compiler keep mendapatkan beberapa kesalahan tentang tidak menemukan Promise
, Map
, Set
dan Iterator
.
Sampai sekarang saya mengabaikan mereka tetapi sekarang saya perlu Promise
agar 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'.
javascript
angular
typescript
Stav Alfi
sumber
sumber
Jawaban:
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
Lebih lanjut tentang @type dengan naskah 2.0.0.
Instal Contoh:
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.ts
pastikan tidak ada referensies6
. Hapus referensi apa punes6
dari dari direktori pengetikan Anda jika ada.Sebagai contoh:
Ini akan bertentangan dengan
types:['core-js']
di typings.json.Termasuk
core-js
dalam array jenis ditsconfig.json
harus 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.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 serve
konfigurasi.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
tl; dr
Jawaban singkat baik
"lib": [ "es6", "dom" ]
atau"types": ["core-js"]
dapat digunakan untuk menyelesaikancan't find Promise,Map, Set and Iterator
. Namun menggunakan keduanya akan menyebabkan kesalahan pengidentifikasi duplikat.sumber
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.
sumber
Final 2 Sudut
- Dukungan es5 (Bekerja sempurna dengan TS 2.0.0 +)
Per pembaruan
es6-shim
tidak didukung sekarang, jika Anda memiliki kedua pengetikan yang diinstal bersamaes6-shim
&core-js
bersama. Hapuses6-shim
pengetikan dengan menyebutkan di tsconfig.json. Anda sekarang dapat merujukcore-js
mengetik di bawah untukes5
dukungan di dalamnyamain.ts
tsconfig.json
- Dukungan es6
Anda hanya perlu mengatur
"target"
properties6
, maka semua kesalahan akan hilang. Dan kode yang ditranskrip akan dalames6
format.sumber
2.0.0-rc.1
. Saya hanya mulai menggunakan Angular beberapa hari yang lalu saya bekerja meskipun dokumen yang memulai [di sini] (). Dipackage.json
mereka 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>
adalahcommon
,compiler
,core
,http
,platform-browser
,platform-browser-dynamic
,router
,router-deprecated
danupgrade
.Diperbarui pada angular-2.0.0-rc.4
TLDR;
Transpile ke es6
Transpile ke es5
Untuk pembaca:
Opsi 1: Transpile ke es6 atau es2015
tsconfig.json:
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:
Instal pengetikan, lalu instal es6-shim:
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.
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:
sumber
--saveDev
tidak berfungsi untuk saat ini.--save-dev
tidak.typings
seharusnya dipasang secara global?Ketika memiliki Typescript> = 2 opsi "lib" di tsconfig.json akan melakukan pekerjaan itu. Tidak perlu mengetik. https://www.typescriptlang.org/docs/handbook/compiler-options.html
sumber
Inilah yang bekerja untuk saya.
periksa apakah ada
typings.json
file,Instal paket pengetikan secara global.
setelah menginstal pengetikan , jalankan
kemudian restart server.
sumber
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.
sumber
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:
sumber
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
NodeJS
dan / atauNPM
bundle builds atau instaltypings
secara global.Inilah yang saya lakukan dalam beberapa langkah:
typings
dalam file proyekpackage.json
.script
blok dalampackage.json
file untuk menjalankan / memperbaruitypings
setelah setiap tindakan NPM.typings.json
file di folder root proyek yang berisi referensicore-js
, yang merupakan salah satu paket shim / polyfill terbaik di luar sana saat ini untuk memperbaiki masalah ES5 / ES6.Begini tampilannya
package.json
file (hanya baris yang relevan):Dan inilah
typings.json
filenya:(
Jasmine
danNode
tidak 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.
sumber
Jika menggunakan Angular2 RC1 dengan mengetikkan v1.0 + gunakan perintah:
untuk menginstal definisi core-js dan kemudian merujuk indeks global Anda di main.ts Anda:
Jika menggunakan es6-shim atau perpustakaan shim lainnya, instal pengetikan untuk itu
Lihat https://github.com/typings/typings/issues/517
sumber
Saya perhatikan masalah ini muncul setelah memutakhirkan dari Angular 5 ke Angular 6. Saya bisa memperbaiki ini dengan melakukan hal berikut di VS2017:
tsconfig.json:
sumber
Saya memiliki masalah yang sama ketika membuat objek janji di dalam kelas saya. Dengan mengubah nama target menjadi "es5" dari "es6" menyelesaikan masalah saya.
sumber
Solusi lain yang mungkin adalah menginstal ulang pengetikan:
Ini cocok untuk saya
"angular2": "2.0.0-beta.15"
npm clean cache
npm install
npm install -g typings
typings
direktori dari proyek (Direktori dimana modul pengetikan diinstal)typings install
npm run
sumber
Solusi lain yang bagus. Anda perlu membuat file typings.json di direktori root proyek dengan konten:
Kemudian instal paket pengetikan global atau lokal, jika tidak diinstal (saya menginstalnya secara global):
Dalam perintah jalankan direktori root proyek:
Setelah itu masalah terpecahkan. Tidak perlu mengubah target tsconfig ke es6 atau es7. Aplikasi web Anda tidak mendukung setelah itu beberapa versi browser lama.
sumber
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.
sumber
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.sumber
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.
sumber
struktur file saya adalah sebagai berikut:
rekatkan di bawah ini ke bagian atas app.ts Anda dan masalah Anda terpecahkan
sumber
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.0
global dan lokal membantu saya untuk menyelesaikannya.Secara global:
Lokal: PERGI ke folder proyek yang Anda buat dengan ng baru
Saya juga mengubah versi naskah dalam package.json dari
^2.0.0
menjadi2.0.0
, tetapi tidak berfungsi sampai saya menurunkan versi instalasi naskah lokal.sumber