Ich verwende Angular (Version 2) mit TypeScript (Version 1.6) und wenn ich den Code kompiliere, erhalte ich folgende Fehler:
Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(1,25): Error TS2304: Cannot find name 'MapConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(2,25): Error TS2304: Cannot find name 'SetConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(4,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(4,39): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(7,9): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(8,30): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(11,43): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(12,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(14,23): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(15,25): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(94,41): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(95,22): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(96,25): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/lang.d.ts(1,22): Error TS2304: Cannot find name 'BrowserNodeGlobal'.
node_modules/angular2/src/core/facade/lang.d.ts(33,59): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/promise.d.ts(1,10): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(3,14): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(8,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(9,38): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,35): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,93): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(11,34): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,149): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(13,43): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/linker/element_injector.d.ts(72,32): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(74,17): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(78,184): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(83,182): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(107,37): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/proto_view_factory.d.ts(27,146): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(52,144): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(76,79): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(77,73): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(94,31): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(97,18): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(100,24): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(103,142): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(104,160): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/render/api.d.ts(281,74): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/zone/ng_zone.d.ts(1,37): Error TS2304: Cannot find name 'Zone'.
Dies ist der Code:
import 'reflect-metadata';
import {bootstrap, Component, CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<input type="text" [(ng-model)]="title" /><h1>{{title}}</h1>',
directives: [ CORE_DIRECTIVES ]
})
class AppComponent {
title :string;
constructor() {
this.title = 'hello angular 2';
}
}
bootstrap(AppComponent);
angular
typescript
user233232
quelle
quelle
import {ROUTER_PROVIDERS} from 'angular2/router';
Ich bekomme das gleiche Problem und aus irgendeinem Grund behebt dies das Problem für mich ...?!?Antworten:
Ein bekanntes Problem: https://github.com/angular/angular/issues/4902
Hauptgrund: Die
.d.ts
von TypeScript implizit enthaltene Datei variiert mit dem Kompilierungsziel. Daher müssen beim Targeting mehr Umgebungsdeklarationen vorhanden sein,es5
selbst wenn tatsächlich Dinge in den Laufzeiten vorhanden sind (z. B. Chrome). Mehr dazulib.d.ts
quelle
Im Änderungsprotokoll für 2.0.0-beta.6 (11.02.2016) ist eine Problemumgehung erwähnt (aufgeführt unter Änderungen):
Stellen Sie sicher, dass Sie den richtigen Referenzpfad haben. Ich musste ../ zum Start hinzufügen , damit dies funktioniert.
quelle
TS2304: Cannot find name 'module'
undTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Irgendwelche Ideen?ES6-Funktionen wie Versprechen werden beim Targeting von ES5 nicht definiert. Es gibt andere Bibliotheken, aber core-js ist die Javascript-Bibliothek, die das Angular-Team verwendet. Es enthält Polyfills für ES6.
Winkel 2 hat sich sehr verändert, seit diese Frage gestellt wurde. Typdeklarationen sind in Typescript 2.0 viel einfacher zu verwenden.
Für ES6-Funktionen in Angular 2 benötigen Sie keine Typisierungen. Verwenden Sie einfach Typoskript 2.0 oder höher und installieren Sie @ types / core-js mit npm:
Dann fügen Sie die TypeRoots und Typen Attribute zu Ihrem tsconfig.json:
Dies ist viel einfacher als die Verwendung von Typisierungen, wie in anderen Antworten erläutert. Weitere Informationen finden Sie im Blog-Beitrag von Microsoft: Typoskript: Die Zukunft der Deklarationsdateien
quelle
typeRoots
wenn der einzige Eintrag, den Sie haben, istnode_modules/@types
.TypeRoots
undTypes
zu tsconfig.json. In meinem Fall musste ich auch mein Gulp gulp-typescript 2.x-Plugin aktualisieren, das mit einer eingebetteten Version von TypeScript 1 transpiliert wurde. Nach der Aktualisierung verwendete ich jedoch TypeScript 2 und fügte die Polyfill @ types / core-js hinzu, die ich war einstellen. Danke vielmals.Für diejenigen, die dem Angular2-Tutorial folgen, um
angular.io
nur explizit zu sein, ist hier eine Erweiterung der Antwort von mvdluit, wo genau der Code abgelegt werden soll:Du
main.ts
solltest so aussehen:Beachten Sie, dass Sie die
///
Schrägstriche in den vorderen Schrägstrichen belassen und nicht entfernen.Ref: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
quelle
_references.js
nicht. Muss sich innerhalb der Komponente befinden, wie diese Antwort nahelegt. Verwenden Sie außerdem../../
anstelle von../
für den Pfad.browser.d.ts
Ordner mehr unter typings. Nur.js
Dateien unterdist
. Es gibt eine Datei mit dem Namen,typings.d.ts
also dachte ich, dass dies die neue ist, aber sie hat das Problem nicht gelöst. Das Bauen für 'es6' funktioniert, aber der IE beschwert sich. Also bleib bei 'es5' Build und keine Typisierungen! : /npm install -g typings typings install
.d.ts
aus dem Typisierungspaket. Auch um IE9 + Anforderungen zu erfüllen, musste für es3 gebaut werden.Ich konnte dies mit dem folgenden Befehl beheben
Beachten Sie, dass Sie
typings
den obigen Befehl ausführen müssen, wenn Sie ihn nicht haben, führen Sie den folgenden Befehl aus, um ihn zu installierenAKTUALISIEREN
typings update liest nicht,
--ambient
es wurde--global
auch für einige Leute, die Sie brauchen, um die Definitionen der oben genannten Bibliotheken zu installieren, verwenden Sie einfach den folgenden BefehlVielen Dank an @bgerth für diesen Hinweis.
quelle
typings install dt~es6-promise dt~es6-collections --global --save
typings
Updates geändert , ich werde Ihre Lösung zur Antwort hinzufügenWenn 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
Zum
Angular 2.0.0-rc.0
Hinzufügennode_modules/angular2/typings/browser.d.ts
funktioniert das nicht. Erste Add typings.json Datei zu Ihrer Lösung, mit folgendem Inhalt:Und aktualisieren Sie dann die
package.json
Datei, um dies einzuschließenpostinstall
:Jetzt renn
npm install
Auch jetzt sollten Sie den
typings
Ordner in Ihrertsconfig.json
Datei ignorieren :Aktualisieren
Jetzt verwendet AngularJS 2.0
core-js
anstelle vones6-shim
. Folgen Sie der Schnellstartdatei typings.json, um weitere Informationen zu erhalten.quelle
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769Sie können den Code am Anfang von .ts-Dateien hinzufügen.
quelle
Ich habe das auf Angular 2 rc1 bekommen. Es stellt sich heraus, dass einige Namen mit den Eingaben v1 gegenüber der alten Version 0.x geändert wurden. Die
browser.d.ts
Dateien wurdenindex.d.ts
.typings install
Suchen Sie nach dem Ausführen Ihre Startdatei (wo Sie booten) und fügen Sie hinzu:/// <reference path="../typings/index.d.ts" />
(oder ohne,../
wenn sich Ihre Startdatei im selben Ordner wie der Eingabeordner befindet)Das Hinzufügen
index.d.ts
zur Dateiliste intsconfig.json
hat aus irgendeinem Grund nicht funktioniert.Auch das
es6-shim
Paket wurde nicht benötigt.quelle
Ich konnte dies beheben, indem ich das
typings
Modul installierte .(Mit ng 2.0.0-rc.1)
quelle
Ich hatte das gleiche Problem und habe es mit der
lib
Option in gelösttsconfig.json
. Wie von basarat in seiner Antwort gesagt , wird eine.d.ts
Datei abhängig von der Kompilierungsoption implizit von TypeScript eingeschlossen,target
aber dieses Verhalten kann mit dem geändert werdenlib
Option .Sie können zusätzliche Definitionsdateien angeben, die eingeschlossen werden sollen, ohne die Ziel-JS-Version zu ändern. Zum Beispiel ist dies Teil meiner aktuellen
compilerOptions
Version für [email protected] undes2015
bietet Unterstützung für Funktionen, ohne etwas anderes zu installieren:Die vollständige Liste der verfügbaren Optionen finden Sie im offiziellen Dokument .
Beachten Sie auch, dass ich zur Unterstützung in meinem Code hinzugefügt
"types": ["node"]
und installiert habe.npm install @types/node
require('some-module')
quelle
und fügen Sie den richtigen Pfad zu index.d.ts hinzu
Versucht auf @ angle-2.0.0-rc3
quelle
Wenn dies
npm install -g typings typings install
immer noch nicht hilft, löschen Sie die Ordner node_modules und typings, bevor Sie diesen Befehl ausführen.quelle
Dies ist der Gedanke, wie jeder versucht, etwas anderes zu tun. Ich glaube, diese Systeme sind noch weit von der endgültigen Version entfernt.
In meinem Fall habe ich von rc.0 auf rc.5 aktualisiert. Dieser Fehler ist aufgetreten.
Mein Fehler war, die Datei tsconfig.json zu ändern.
quelle
"lib"
nicht"target"
.Fügen Sie typing.d.ts in den Hauptordner der Anwendung ein und deklarieren Sie dort die Variable, die Sie jedes Mal verwenden möchten
Nachdem Sie dies in typing.d.ts deklariert haben, wird in der Anwendung kein Fehler für require angezeigt.
quelle
Ich bin neu in Angular, aber für mich wurde die Lösung durch einfaches Importieren von Input gefunden. Ich kann diesen nicht gutschreiben und habe ihn auf einem anderen Board gefunden. Dies ist eine einfache Lösung, wenn Sie das gleiche Problem haben, aber wenn Ihre Probleme komplexer sind, würde ich die obigen Informationen lesen.
Mukesh :
quelle
Ich fand dieses sehr hilfreiche Dokument auf der Website von Angular 2. Es hat mich endlich dazu gebracht, die Dinge richtig zum Laufen zu bringen, während die anderen Antworten hier, um Typisierungen zu installieren, mich mit verschiedenen Fehlern gescheitert sind. (Aber hat mir geholfen, in die richtige Richtung zu führen.)
Anstatt es6-Versprechen und es6-Sammlungen einzuschließen, enthält es Core-Js, was für mich den Trick getan hat ... keine Konflikte mit Angular2s Kern-Ts-Definitionen. Darüber hinaus wurde in dem Dokument erläutert, wie Sie all dies so einrichten, dass es bei der Installation von NPM automatisch erfolgt, und wie Sie Ihre typings.json-Datei ändern.
quelle
Angular 2 RC1 hat das
node_modules/angular2
Verzeichnis in umbenanntnode_modules/angular
.Wenn Sie eine Gulpfile verwenden, um Dateien in ein Ausgabeverzeichnis zu kopieren, haben Sie wahrscheinlich noch
node_modules/angular
sitzen dort, was möglicherweise vom Compiler aufgegriffen wird und die Hölle aus sich heraus verwirrt.node_modules
Löschen Sie also (sorgfältig) das, was Sie für die Beta-Versionen haben, und löschen Sie auch alle alten Eingaben und führen Sie sie erneut austypings install
.quelle
Guter Anruf, @VahidN, ich fand, ich brauchte
Auch in meinem
tsconfig
, um Fehler vones6-shim
selbst zu stoppenquelle
Importieren Sie die folgende Anweisung in Ihre JS-Datei.
quelle
import './rxjs-extensions';
zu meiner hinzu ,app.component.ts
und es scheint, dass diese Fehler behoben wurden.Die akzeptierte Antwort bietet keine praktikable Lösung, und die meisten anderen schlagen die "Triple-Slashes" -Umgehung vor, die nicht mehr praktikabel ist, da die
browser.d.ts
von den neuesten Angular2-RCs entfernt wurde und daher nicht mehr verfügbar ist.Ich empfehle dringend, das
typings
Modul so zu installieren, wie es von einigen Lösungen hier vorgeschlagen wird. Es ist jedoch nicht erforderlich, es manuell oder global durchzuführen. Es gibt eine effektive Möglichkeit, dies nur für Ihr Projekt und innerhalb der VS2015-Schnittstelle zu tun. Folgendes müssen Sie tun:typings
in der package.json - Datei des Projekts.script
derpackage.json
Datei einen Block hinzu, der ausgeführt / aktualisiert werden solltypings
nach jeder NPM-Aktion werden soll.typings.json
im Stammordner des Projekts eine Datei hinzu, die einen Verweis auf enthältcore-js
(insgesamt besser alses6-shim
atm).Das ist es.
Sie können auch einen Blick auf diesen anderen SO-Thread werfen und / oder diesen Beitrag in meinem Blog lesen, um weitere Details zu erhalten.
quelle
Ich habe diesen Fehler erhalten, nachdem ich meinen Entwicklungszweig mit meinem aktuellen Zweig zusammengeführt habe. Ich habe einige Zeit damit verbracht, das Problem zu beheben. Wie Sie im folgenden Bild sehen können, gibt es überhaupt keine Probleme mit den Codes.
Die einzige Lösung, die für mich funktioniert hat, ist das Neustarten des VSCodes
quelle
Jetzt müssen Sie sie manuell importieren.
quelle
Aktualisieren
tsconfig.json
, ändernzu
quelle