Winkel und Typoskript: Namen können nicht gefunden werden

221

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);
user233232
quelle
Es sieht so aus, als gäbe es hier ein Problem dafür. github.com/angular/angular/issues/4902
rob
Versuchen Sie, den folgenden Import hinzuzufügen. import {ROUTER_PROVIDERS} from 'angular2/router';Ich bekomme das gleiche Problem und aus irgendeinem Grund behebt dies das Problem für mich ...?!?
Rob

Antworten:

52

Ein bekanntes Problem: https://github.com/angular/angular/issues/4902

Hauptgrund: Die .d.tsvon TypeScript implizit enthaltene Datei variiert mit dem Kompilierungsziel. Daher müssen beim Targeting mehr Umgebungsdeklarationen vorhanden sein, es5selbst wenn tatsächlich Dinge in den Laufzeiten vorhanden sind (z. B. Chrome). Mehr dazulib.d.ts

Basarat
quelle
446
Was ist die Lösung?
user233232
3
2.0.0-alpha.45 ist gut, verwenden Sie Typisierungen von node_modules / angle2 / bundles / typings / ** / *. D.ts
Are Butuv
2
"angle2": "2.0.0-beta.3" funktioniert, aber Beta.4 und Beta.5 scheinen dieses Problem erneut zu haben, zumindest wenn Sie Ihr Projekt wie im Tutorial
CorayThan
3
@Roj Ich sehe dies immer noch in Beta 6, aber es funktioniert, wenn der Verweis auf browser.d.ts
inki
3
Hurra! rc1 schloss sich dem an.
RoninCoder
105

Im Änderungsprotokoll für 2.0.0-beta.6 (11.02.2016) ist eine Problemumgehung erwähnt (aufgeführt unter Änderungen):

Wenn Sie --target = es5 verwenden, müssen Sie irgendwo in Ihrer Anwendung eine Zeile hinzufügen (z. B. oben in der .ts-Datei, in der Sie bootstrap aufrufen):

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

(Beachten Sie, dass Sie, wenn sich Ihre Datei nicht im selben Verzeichnis wie node_modules befindet, am Anfang dieses Pfads eine oder mehrere ../ hinzufügen müssen.)

Stellen Sie sicher, dass Sie den richtigen Referenzpfad haben. Ich musste ../ zum Start hinzufügen , damit dies funktioniert.

mvdluit
quelle
3
Dies hat viele Fehler für mich behoben, aber ich bekomme immer noch Fehler wie TS2304: Cannot find name 'module'und TS2339: Property 'find' does not exist on type 'MyThing[]'.... Irgendwelche Ideen?
Mwijnands
1
Was ist, wenn Sie eckig in einem Paket verwenden, das zur Wiederverwendung bestimmt ist? Jede Anwendung, die ich versuche, ein Paket mit einer Datei mit dieser Referenz zu verwenden, beschwert sich zum Zeitpunkt der Erstellung von tsc, dass diese Referenz nicht gefunden werden kann.
Hans
5
Gibt es eine Lösung für die neue Paketstruktur in Angular, ich kann keine browser.d.ts in der neuen @angular / .... Struktur finden
I.devries
2
@ I.devries Richtig, sie haben browser.d.ts entfernt. Die Dateien sind jetzt index.d.ts, und Sie benötigen eine für jede Winkelkomponente, da jede jetzt separat in rc.0 und höher installiert wird. Sie müssen auch "Typings" installieren - siehe Antworten von Khaled Al-Ansari und theUtherSide oben.
Vern Jensen
1
Ich löste es durch Hinzufügen von: /// <reference path = "../ typings / index.d.ts" />
Sako73
80

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.

npm install -g typescript

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:

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

Dann fügen Sie die TypeRoots und Typen Attribute zu Ihrem tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "typeRoots": [
      "../node_modules/@types"
    ],
    "types" : [
      "core-js"
    ]
  },
  "exclude": [
    "node_modules"
  ]
}

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

David Rinck
quelle
1
Ich denke, das Array "types" gehört auch zum Objekt "compilerOptions". Aber anders als das, vielen Dank, hatte ich den ganzen Tag damit zu kämpfen.
Plexus
@plexus Danke! Sie haben Recht mit den compilerOptions. Ich habe die Antwort korrigiert.
David Rinck
Vielen Dank für den tollen Beitrag, aber laut der von Ihnen angegebenen URL ist es nicht einmal notwendig, tsconfig.json zu erweitern, es funktioniert einfach trotzdem :) Zumindest für mich. Das einzige, was Sie tun müssen, ist das erforderliche Paket zu installieren
Ilya Chernomordik
Sie können sogar entfernen, typeRootswenn der einzige Eintrag, den Sie haben, ist node_modules/@types.
Morgan Touverey Quilling
Wie ein Zauber. Wie @ ilya-chernomordik erwähnt hatte, funktionierte dies auch bei mir ohne das Hinzufügen von TypeRootsund Typeszu 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.
rscarter
49

Für diejenigen, die dem Angular2-Tutorial folgen, um angular.ionur explizit zu sein, ist hier eine Erweiterung der Antwort von mvdluit, wo genau der Code abgelegt werden soll:

Du main.tssolltest so aussehen:

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

import {bootstrap} from 'angular2/platform/browser'
import {AppComponent} from './app.component'
// Add all operators to Observable
import 'rxjs/Rx'

bootstrap(AppComponent);

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

Fäulnis
quelle
Ich verwende VS2015 MVC6 und Angular2 Beta.14. Wenn Sie die Referenzlinie darin platzieren, funktioniert dies _references.jsnicht. Muss sich innerhalb der Komponente befinden, wie diese Antwort nahelegt. Verwenden Sie außerdem ../../anstelle von ../für den Pfad.
RoninCoder
@ Hani hast du schon einen Weg gefunden? Ich werde versuchen, ein Upgrade auf rc1 durchzuführen und es auszuprobieren
Rots
Also sind die Eingaben weg. Ich denke, Sie müssen das separat installieren und wenn ich das tue, werden mir auch viele nutzlose Pakete hinzugefügt. Trotzdem gibt es auch nach all dem keinen browser.d.tsOrdner mehr unter typings. Nur .jsDateien unter dist. Es gibt eine Datei mit dem Namen, typings.d.tsalso 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! : /
RoninCoder
@ Hani Es gibt eine neue Antwort. Vielleicht klappt es? npm install -g typings typings install
Fäulnis
Herabgestuft auf Beta.15 und verwendet das gleiche .d.tsaus dem Typisierungspaket. Auch um IE9 + Anforderungen zu erfüllen, musste für es3 gebaut werden.
RoninCoder
48

Ich konnte dies mit dem folgenden Befehl beheben

typings install es6-promise es6-collections --ambient

Beachten Sie, dass Sie typingsden obigen Befehl ausführen müssen, wenn Sie ihn nicht haben, führen Sie den folgenden Befehl aus, um ihn zu installieren

npm install -g typings

AKTUALISIEREN

typings update liest nicht, --ambientes wurde --globalauch für einige Leute, die Sie brauchen, um die Definitionen der oben genannten Bibliotheken zu installieren, verwenden Sie einfach den folgenden Befehl

typings install dt~es6-promise dt~es6-collections --global --save

Vielen Dank an @bgerth für diesen Hinweis.

Khaled Al-Ansari
quelle
9
Für mich war estypings install dt~es6-promise dt~es6-collections --global --save
Uhr
1
@bgerth Ich denke, es hat sich aufgrund des typingsUpdates geändert , ich werde Ihre Lösung zur Antwort hinzufügen
Khaled Al-Ansari
tipps installieren dt ~ es6-versprechen dt ~ es6-sammlungen --global --save hat bei mir funktioniert. Dieses Problem tritt immer wieder auf und tritt nur sporadisch auf. Dank dieses Fixes können wir hoffen, dass es länger als einen Tag funktioniert.
Sam
typings install dt ~ es6-versprechen dt ~ es6-sammlungen --global --save hat auch für mich
funktioniert
33

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

{
    "compilerOptions": {
        "target": "es5",
        "lib": ["es2016", "dom"] //or es6 instead of es2016(es7)
    }
}
Niels Steenbeek
quelle
Yup ... das Hinzufügen von "lib": ["es2016", "dom"] zu meiner tsconfig.json-Datei hat das Problem behoben
Marvel Moe
Das ist richtig. Seien Sie vorsichtig, da einige der darin angegebenen Typen möglicherweise nicht vorhanden sind.
Aluan Haddad
@Niels Steenbeek hat es hier richtig. Bei den Übungen für Angular 2 & 4-Kurse sind dieselben Fehler aufgetreten. Mein lib-Inhalt war jedoch etwas anders: "lib": ["es2015", "es2015.iterable", "dom"]
BoiseBaked
15

Zum Angular 2.0.0-rc.0Hinzufügen node_modules/angular2/typings/browser.d.tsfunktioniert das nicht. Erste Add typings.json Datei zu Ihrer Lösung, mit folgendem Inhalt:

{
    "ambientDependencies": {
        "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd"
    }
}

Und aktualisieren Sie dann die package.jsonDatei, um dies einzuschließenpostinstall :

"scripts": {
    "postinstall": "typings install"
},

Jetzt renn npm install

Auch jetzt sollten Sie den typingsOrdner in Ihrer tsconfig.jsonDatei ignorieren :

 "exclude": [
        "node_modules",
        "typings/main",
        "typings/main.d.ts"
    ]

Aktualisieren

Jetzt verwendet AngularJS 2.0 core-jsanstelle von es6-shim. Folgen Sie der Schnellstartdatei typings.json, um weitere Informationen zu erhalten.

VahidN
quelle
Es gibt ein Problem mit diesem Fehler in rc0 github.com/angular/angular/issues/4902#issuecomment-216495769
ssuperczynski
15

Sie können den Code am Anfang von .ts-Dateien hinzufügen.

/// <reference path="../typings/index.d.ts" />
user3543469
quelle
Das hat bei mir funktioniert. Es ist nicht erforderlich, Typisierungen global zu installieren. Versucht auf stabilem Winkel 2.
Gopinath Shiva
Arbeitete auch für mich mit Angular 2.0.0 (Release)
JoshuaDavid
10

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.tsDateien wurden index.d.ts.

typings installSuchen 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.tszur Dateiliste in tsconfig.jsonhat aus irgendeinem Grund nicht funktioniert.

Auch das es6-shimPaket wurde nicht benötigt.

mbursill
quelle
7

Ich konnte dies beheben, indem ich das typingsModul installierte .

npm install -g typings
typings install

(Mit ng 2.0.0-rc.1)

theUtherSide
quelle
1
"'typyings.json' fehlt. - (Keine Abhängigkeiten)". Dieser Fehler wird zurückgegeben, wenn ich den Befehl im selben Ordner der Datei app.ts ausführe. Wo soll ich diese typings.json- Datei finden und wann soll ich den Befehl ausführen?
Ulysses Alves
7

Ich hatte das gleiche Problem und habe es mit der libOption in gelöst tsconfig.json. Wie von basarat in seiner Antwort gesagt , wird eine .d.tsDatei abhängig von der Kompilierungsoption implizit von TypeScript eingeschlossen, targetaber 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 compilerOptionsVersion für [email protected] und es2015bietet Unterstützung für Funktionen, ohne etwas anderes zu installieren:

"compilerOptions": {
    "experimentalDecorators": true,
    "lib": ["es5", "dom", "es6", "dom.iterable", "scripthost"],
    "module": "commonjs",
    "moduleResolution": "node",
    "noLib": false,
    "target": "es5",
    "types": ["node"]
}

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/noderequire('some-module')

Jiayi Hu
quelle
5
 typings install dt~es6-shim --save --global

und fügen Sie den richtigen Pfad zu index.d.ts hinzu

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

Versucht auf @ angle-2.0.0-rc3

Ali Salehi
quelle
Diese Lösung funktioniert perfekt, wenn wir die .d.ts-Datei in einem Bibliotheksprojekt benötigen.
Robin Ding
4

Wenn dies npm install -g typings typings installimmer noch nicht hilft, löschen Sie die Ordner node_modules und typings, bevor Sie diesen Befehl ausführen.

Tibersky
quelle
4

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.

{
    "compilerOptions": {
        "target": "es6", <-- It was es5
        "module": "system",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "outDir": "../wwwroot/app"
    },
    "compileOnSave": true,
    "exclude": [
        "../node_modules",
        "../typings/main"
    ]
}
AFetter
quelle
1
Dies löste auch meine Probleme. Die RC-Versionen zielen anscheinend auf es6 ab.
Inari
Sie zielen jetzt nicht mehr auf ES5. Wenn überhaupt, ändern Sie "lib"nicht "target".
Aluan Haddad
4

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

declare var System: any;
declare var require: any;

Nachdem Sie dies in typing.d.ts deklariert haben, wird in der Anwendung kein Fehler für require angezeigt.

NARGIS PARWEEN
quelle
4

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 :

Sie müssen Eingaben wie diese oben in die untergeordnete Komponente importieren

import { Directive, Component, OnInit, Input } from '@angular/core';
Tripp Cannella
quelle
3

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.

Vern Jensen
quelle
2

Angular 2 RC1 hat das node_modules/angular2Verzeichnis 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_modulesLö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 aus typings install.

Simon_Weaver
quelle
oder alternativ ... arbeite 4 Monate lang an anderen Sachen und warte, bis die endgültige Veröffentlichung von vorne beginnt (was ich gerade mache)
Simon_Weaver
2

Guter Anruf, @VahidN, ich fand, ich brauchte

    "exclude": [
        "node_modules",
        "typings/main",
        "typings/main.d.ts"
    ]

Auch in meinem tsconfig, um Fehler von es6-shimselbst zu stoppen

Fergus Gallagher
quelle
2

Importieren Sie die folgende Anweisung in Ihre JS-Datei.

import 'rxjs/add/operator/map';
Shivang Gupta
quelle
Ich verschiebe das Upgrade eines Projekts auf die neueste Version, füge es also mit der Datei rxjs-extensions aus dem Angular2-Tutorial (einschließlich Ihrer vorgeschlagenen Zeile) import './rxjs-extensions';zu meiner hinzu , app.component.tsund es scheint, dass diese Fehler behoben wurden.
James
Könnten Sie bitte genauer sein. Welche JS-Datei? die von Typescript kompilierte? Main?
mm_
2

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.tsvon den neuesten Angular2-RCs entfernt wurde und daher nicht mehr verfügbar ist.

Ich empfehle dringend, das typingsModul 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:

  • fügen Sie typingsin der package.json - Datei des Projekts.
  • Fügen Sie scriptder package.jsonDatei einen Block hinzu, der ausgeführt / aktualisiert werden solltypings nach jeder NPM-Aktion werden soll.
  • Fügen Sie typings.jsonim Stammordner des Projekts eine Datei hinzu, die einen Verweis auf enthält core-js(insgesamt besser als es6-shimatm).

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.

Darkseal
quelle
2

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.

Geben Sie hier die Bildbeschreibung ein

Die einzige Lösung, die für mich funktioniert hat, ist das Neustarten des VSCodes

Sibeesh Venu
quelle
0

Jetzt müssen Sie sie manuell importieren.

import 'rxjs/add/operator/retry';
import 'rxjs/add/operator/timeout';
import 'rxjs/add/operator/delay';
import 'rxjs/add/operator/map';




this.http.post(url, JSON.stringify(json), {headers: headers, timeout: 1000})

         .retry(2)

         .timeout(10000, new Error('Time out.'))

         .delay(10)

         .map((res) => res.json())
        .subscribe(
          (data) => resolve(data.json()),
          (err) => reject(err)
        );
Jithesh Chandra
quelle
-3

Aktualisieren tsconfig.json, ändern

"target": "es5"

zu

"target": "es6"
Swathi Uppu
quelle
Dies kann dazu führen, dass Ihre JavaScript-Ausgabe nicht mit älteren Browsern kompatibel ist.
Tom Robinson