Nach der Installation von Angular, einige Fehler über nicht finden , das Typoskript Compiler erhalte immer Promise
, Map
, Set
undIterator
.
Bis jetzt habe ich sie ignoriert, aber jetzt brauche ich sie, Promise
damit mein Code funktionieren kann.
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
Die Fehler:
................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
quelle
quelle
Antworten:
Winkel 5 mit Typoskript ^ 2.0.0
Dies sollte auch mit früheren Versionen von Angular 2+ funktionieren.
Damit dies mit Typoskript 2.0.0 funktioniert, habe ich Folgendes getan.
npm install --save-dev @types/core-js
tsconfig.json
Weitere Informationen zu @types mit Typoskript 2.0.0.
Installationsbeispiel:
Doppelte Bezeichnerfehler
Dies ist höchstwahrscheinlich darauf zurückzuführen, dass doppelte Ecmascript 6-Typisierungen bereits von einem anderen Ort importiert werden, höchstwahrscheinlich von einem alten es6-Shim.
Stellen Sie
typings.d.ts
sicher, dass keine Verweise auf vorhanden sindes6
. Entfernen Sie alle Verweise aufes6
aus Ihrem Schreibverzeichnis, falls Sie eines haben.Beispielsweise:
Dies steht in Konflikt mit
types:['core-js']
typings.json.Einschließlich
core-js
in das Typenarray intsconfig.json
sollte der einzige Ort sein, von dem es importiert wird.Angular CLI 1.0.0-beta.30
Wenn Sie die Angular-CLI verwenden, entfernen Sie das lib-Array in
typings.json
. Dies scheint im Widerspruch zur Deklaration von Core-Js in Typen zu stehen.Webstorm / Intellij-Benutzer, die die Angular-CLI verwenden
Stellen Sie sicher, dass der integrierte Typenskript-Compiler deaktiviert ist. Dies steht in Konflikt mit der CLI. Um Ihr Typoskript mit der CLI zu kompilieren, können Sie eine
ng serve
Konfiguration einrichten.Tsconfig compilerOptions lib vs types
Wenn Sie keine Core-JS-Typdefinitionen installieren möchten, sind einige ES6-Bibliotheken im Lieferumfang von Typoskript enthalten. Diese werden über die
lib: []
Eigenschaft in tsconfig verwendet.Siehe hier zum Beispiel: https://www.typescriptlang.org/docs/handbook/compiler-options.html
tl; dr
Kurze Antwort entweder
"lib": [ "es6", "dom" ]
oder"types": ["core-js"]
kann zur Lösung verwendet werdencan't find Promise,Map, Set and Iterator
. Die Verwendung von beiden führt jedoch zu doppelten Bezeichnungsfehlern.quelle
Ich habe auch das gleiche Problem - "Versprechen nicht gefunden" - wenn der Code ein Versprechen-Objekt erstellen möchte.
Es wurde versucht, eine Lösung für stackoverflow zu finden, einschließlich der Lösung, mit der System.config ({...}) entfernt wird, um system.js zu bilden und in index.html aufzunehmen.
Endlich habe ich das Problem gelöst. Das Problem ist, dass in index.html es6-shim.min.js enthalten ist. In tsconfig.json hat die Eigenschaft "target" unter "compilerOptions" jedoch den Wert "es5". Nachdem ich es in "es6" geändert habe, ist der Fehler verschwunden.
quelle
Winkel 2 Finale
- es5 Unterstützung (Funktioniert perfekt mit TS 2.0.0 +)
Pro Update
es6-shim
wird jetzt nicht unterstützt, wenn Sie beide Typisierungen zusammenes6-shim
undcore-js
zusammen installiert haben . Entfernen Sie diees6-shim
Eingabe, indem Sie in tsconfig.json erwähnen. Sie können sich jetzt unten auf diecore-js
Eingabe beziehen, umes5
Unterstützung im Inneren zu erhaltenmain.ts
tsconfig.json
- es6 unterstützt
Sie müssen nur die
"target"
Eigenschaft auf setzenes6
, dann werden alle Fehler verschwinden. Und der transpilierte Code wird imes6
Format sein.quelle
2.0.0-rc.1
. Ich habe erst vor ein paar Tagen angefangen, Angular zu verwenden. Ich habe über die Einstiegsdokumente [hier] () gearbeitet. In denpackage.json
setzten sie"angular2-in-memory-web-api": "0.0.7"
und der Rest der Winkel Zeug kommt von"@angular/<module>": "2.0.0-rc.1"
wo<module>
istcommon
,compiler
,core
,http
,platform-browser
,platform-browser-dynamic
,router
,router-deprecated
undupgrade
.Aktualisiert ab Angular-2.0.0-rc.4
TLDR;
Transpile zu es6
Transpile zu es5
Für die Leser:
Option 1: Transpile auf es6 oder es2015
tsconfig.json:
Beachten Sie, dass uglifyjs es6 derzeit nicht unterstützt . Dies kann sich auf die Erstellung von Produktionspaketen auswirken.
Option 2: Transpilieren Sie zu es5, installieren Sie Typisierungen und installieren Sie dann das es6-shim:
tsconfig.json:
Installieren Sie Typisierungen und dann es6-shim:
Wenn Sie diesen Weg gehen, müssen Sie sicherstellen, dass der Typoskript-Compiler die .d.ts-Datei finden kann.
Sie haben zwei Möglichkeiten:
ein. Stellen Sie sicher, dass sich Ihre Datei tsconfig.json auf derselben Ebene befindet wie der Ordner typings.
b. Fügen Sie eine Referenz in Ihre main.ts-Datei ein, in der Ihre angle2-Anwendung gebootet wird.
Option A: Stellen Sie sicher, dass sich Ihre Datei tsconfig.json auf derselben Ebene befindet wie der Eingabeordner.
Hinweis: Verwenden Sie NICHT das Ausschlussflag, um den Eingabeordner auszuschließen.
Option B: Referenz in der Hauptdatei vor dem Bootstrap (nicht ausführen):
Wie in anderen Antworten gezeigt, ist diese Datei von Angular nicht mehr enthalten
main.ts:
quelle
--saveDev
funktioniert momentan nicht.--save-dev
tut.typings
global installiert werden?Wenn Typescript> = 2 ist, erledigt die Option "lib" in tsconfig.json die Aufgabe. Keine Notwendigkeit für Typisierungen. https://www.typescriptlang.org/docs/handbook/compiler-options.html
quelle
Das hat bei mir funktioniert.
Überprüfen Sie, ob eine
typings.json
Datei vorhanden ist.Installieren Sie das Typisierungspaket global.
Führen Sie nach der Installation der Typisierungen aus
Starten Sie dann den Server neu.
quelle
Ich hatte ein ähnliches Problem, bei dem die Promise.resolve () -Methode nicht erkannt wurde . Ich habe den "Ziel" -Wert in tsconfig.json von ES5 auf ES6 geändert . Das hat das Problem gelöst.
Hoffe das hilft.
quelle
Da Angular 2 auf RC 0 umgestellt wurde, ist /angular2/typings/browser.d.ts nicht mehr Teil der Angular 2-Verteilung. Die Datei kann separat installiert werden.
Von hier aus: https://github.com/angular/angular/issues/8513 gibt es einige Optionen. Derjenige, der für mich arbeitete, war:
quelle
Wenn Sie Angular2 RC1 mit Typings v1.0 + verwenden, verwenden Sie den folgenden Befehl:
So installieren Sie die core-js-Definition und verweisen dann auf Ihren globalen Index in Ihrer main.ts:
Wenn Sie es6-shim oder eine andere Shim-Bibliothek verwenden, installieren Sie stattdessen Typisierungen dafür
Siehe https://github.com/typings/typings/issues/517
quelle
Ich habe es geschafft, dieses Problem zu beheben, ohne einen Triple-Slash-Verweis auf die TS-Bootstrap-Datei hinzufügen zu müssen. Wechseln Sie zu ES6 (was, wie @DatBoi sagte, eine Reihe von Problemen mit sich bringt ), aktualisieren Sie VS2015s
NodeJS
und / oderNPM
gebündelte Builds oder installieren Sie sietypings
global.Folgendes habe ich in wenigen Schritten getan:
typings
in der Projektdatei hinzugefügtpackage.json
.script
Derpackage.json
Datei wurde ein Block hinzugefügt , dertypings
nach jeder NPM-Aktion ausgeführt / aktualisiert werden soll.typings.json
Datei im Stammordner des Projekts hinzugefügt, die einen Verweis auf enthält.core-js
Dies ist eines der derzeit besten Shim / Polyfill-Pakete, um ES5 / ES6-Probleme zu beheben.So sollte die
package.json
Datei aussehen (nur relevante Zeilen):Und hier ist die
typings.json
Datei:(
Jasmine
undNode
sind nicht erforderlich, aber ich schlage vor, sie für den Fall aufzubewahren, dass Sie sie in Zukunft benötigen).Dieses Update funktioniert gut mit Angular2 RC1 bis RC4, was ich brauchte, aber ich denke, es wird auch ähnliche Probleme mit anderen ES6-fähigen Bibliothekspaketen beheben.
AFAIK, ich denke, dies ist die sauberste Möglichkeit, das Problem zu beheben, ohne die Standardeinstellungen von VS2015 zu verfälschen.
Für weitere Informationen und eine detaillierte Analyse des Problems empfehle ich außerdem, diesen Beitrag in meinem Blog zu lesen .
quelle
Ich habe festgestellt, dass diese Probleme nach dem Upgrade von Angular 5 auf Angular 6 auftreten. Ich konnte dies beheben, indem ich in VS2017 Folgendes tat:
tsconfig.json:
quelle
Ich hatte das gleiche Problem beim Erstellen eines Versprechensobjekts in meiner Klasse. Durch Ändern des Zielnamens in "es5" von "es6" wurde mein Problem gelöst.
quelle
Eine andere mögliche Lösung ist die Neuinstallation von Typisierungen:
Dies funktioniert bei mir für
"angular2": "2.0.0-beta.15"
npm clean cache
npm install
npm install -g typings
typings
Verzeichnis aus Projekt (Verzeichnis wwhere Typisierungen Module installiert ist)typings install
npm run
quelle
Eine weitere gute Lösung. Sie müssen eine Datei typings.json im Stammverzeichnis des Projekts mit folgendem Inhalt erstellen:
Dann installieren Sie das globale oder lokale Typisierungspaket, falls es nicht installiert ist (ich installiere es global):
Führen Sie im Projektstammverzeichnis den folgenden Befehl aus:
Danach ist das Problem gelöst. Nicht erforderlich, um das tsconfig-Ziel in es6 oder es7 zu ändern. Ihre Webanwendung unterstützt danach einige alte Browserversionen nicht mehr.
quelle
Wenn Sie hierher gekommen sind, weil Sie diese Fehler in Visual Studio 2017 sehen, haben Sie ein anderes Problem als oben, wenn Sie erfolgreich kompilieren können. Dies liegt daran, dass der Sprachdienst Ihre Datei tsconfig.json nicht auswählt.
https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html
Sie müssen die Build-Aktion Ihrer Datei tsconfig.json auf "Inhalt" setzen (Rechtsklick -> Eigenschaften), dann nimmt VS sie auf.
quelle
Ich fand die Referenz in boot.ts nicht der richtige Pfad. Aktualisieren dieses Pfads,
/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
um die Promise-Fehler zu beheben.quelle
Ich trainiere mit einem Angular2-Tutorial (Held).
Nach der Installation von @ types / core-js, die in diesen Antworten kommentiert wurden, wurde der Fehler "Doppelte Kennung" angezeigt.
In meinem Fall wurde das Entfernen der lib-Zeile in tsconfig.json gelöst.
quelle
Meine Dateistruktur ist wie folgt:
Fügen Sie das Folgende oben in Ihre app.ts ein und Ihr Problem ist gelöst
quelle
Ich habe das gleiche Problem und kann es in github https://github.com/angular/angular-cli/issues/1901 finden, in dem angegeben ist , dass es sich um ein Problem handelt
[email protected]
.Das Downgrade von Typoskript auf
2.0.0
global und lokal hat mir geholfen, es zu beheben.Global:
Lokal: Gehen Sie in den Projektordner, den Sie mit ng new erstellt haben
Ich habe auch die Version von Typoskript in package.json von
^2.0.0
auf geändert2.0.0
, aber es hat nicht funktioniert, bis ich die lokale Typoskript-Installation heruntergestuft habe.quelle