Build: Name nicht gefunden Promise - Visual Studio 2015 mit MVC6 und Angular 2

8

Zunächst einmal: Ich habe diese überprüft:

Ссылка

Ссылка

Typescript kann den Namen 'Promise' trotz Verwendung von ECMAScript 6 nicht finden

wie man ES6-Versprechen mit Typoskripten verwendet?

Visual Studio-Code: Kann der Name angular nicht gefunden werden?

How um Angular2 / TypeScript-Fehler auf der Karte kann nicht gefunden werden, Promise ... beim Targeting -es5

Und viele, viele, viele mehr. Hatte schon seit 2 Tagen meinen Kopf geschlagen.

Und ja:

Ich habe in meiner Boot.ts-Datei (oder bootstrap-Datei) verwiesen:

%Vor%

Nun zu dem Problem: Ich benutze Visual Studio 2015 W / Update 1 und ein ASP.NET MVC 6 Projekt (Release Candidate 1) + Typescript 1.8.1.

Ich habe dieses Tutorial verwendet, um das Setup durchzuführen: Ссылка

Ich verwende Angular 2 seit einiger Zeit erfolgreich und jetzt wird der gleiche Code (afaik) nicht kompiliert. Es wird mir die "Can not find name: Promise" in der Datei browser.d.ts "geben, die in node_modules / angular2 / platform:

liegt

tsconfig.json

%Vor%

package.json

%Vor%

gulpfile.js

%Vor%

Ich habe sogar versucht, den Referenzpfad innerhalb der Datei node_module / angular2 / platform / browser.d.ts zu verwenden, und es wurde ein Fehler bei der Verwendung des Referenzpfads in Nicht-Moduldateien verursacht.

Das einzige Ding funktioniert etwas (ich habe es nicht vollständig implementiert, weil es verrückt ist): Kopieren Sie den Code in der es6-promise.d.ts Datei und fügen Sie ihn in alle Dateien ein, die danach gefragt werden.

>

Bearbeiten Sniff Sniff Hier riecht etwas schlecht: Ich beschloss, den Ordner node_module in _bak_node_module_folder umzubenennen und alle Pakete neu zu installieren:

%Vor%

Ich hasse diese Zeichenbeschränkung mit Windows wirklich sehr. Wenn das das Problem ist, denke ich, dass ich mich von der höchsten Brücke meiner Stadt stürzen werde.

x2 bearbeiten Also habe ich beschlossen, Visual Studio's NPM wie vorgeschlagen zu aktualisieren und es hat nicht geklappt. Also habe ich beschlossen, Nodejs zu greifen und es vom Cmd auszuführen. Leider besteht das Problem weiterhin:

Hier ist die Ausgabe:

%Vor%     
Jose A 23.03.2016, 12:54
quelle

15 Antworten

6

Der Grund dafür ist, dass Sie auf ES5 abzielen, für das keine Versprechen enthält. Wenn Sie zu ES6 wechseln, verschwindet der Fehler auf magische Weise.

Wenn Sie ES5 als Ziel verwenden müssen, verwenden Sie einfach das in vorherigen Antworten erwähnte es6-shim.

    
tomitrescak 17.10.2016 07:06
quelle
4

Ich habe genau das gleiche Problem nach der Aktualisierung von es-promise von 3.0.2 auf 3.1.2. Letztendlich habe ich die neuere Version von nodejs mit einer neueren Version von npm installiert und dann den Ordner node_module gelöscht und die Pakete erneut installiert. Ich habe dann den Referenzpfad zur Datei main.ts oder boot.ts (wie auch immer Sie es benannt haben) hinzugefügt. Das hat es behoben.

Genau wie Steve sagte.

%Vor%     
Andre L 06.04.2016 17:25
quelle
4

Das habe ich mit Angular 2.0.0-rc.1 gelöst: In der Klasse, in der Sie Angular bootstrappen, legen Sie diese Zeile oben:

%Vor%     
Mcanic 19.05.2016 12:16
quelle
2

Ich habe das gleiche Problem für eine lange Zeit in Visual Studio bekommen. Ich habe bemerkt, dass du dein Projekt in eine Welt voller Verletzungen bringst, wenn du nicht darauf wartest, dass ALLE deine NPM-Abhängigkeiten wiederhergestellt werden, BEVOR du versuchst zu bauen.

Mein Tipp: Gehen Sie zurück zu den ursprünglichen Abhängigkeitsversionen in Ihrer package.json-Datei aus dem Demoprojekt auf mithunvp.com. Warten Sie, bis die Abhängigkeiten wiederhergestellt sind, und erstellen Sie dann Ihr VS-Projekt neu.

Für das Problem der Zeichenbeschränkung müssen Sie npm in Visual Studio aktualisieren.
Siehe: npm unter Windows upgraden

    
Karl P 02.04.2016 17:24
quelle
2

Dieses Problem mit ES6-Typdefinitionen war für mich heute ein Albtraum: Ich habe viele Antworten auf SO durchgelesen, die versucht haben, das Problem auf verschiedene Arten zu umgehen, darunter:

  • Fügen Sie einen oder mehrere "triple-slash" Verweise auf die Bootstrap-TS-Datei hinzu , was ich wirklich nicht tun möchte, besonders jetzt, da browser.d.ts von Angular2 most nicht mehr enthalten ist kürzlich RCs.
  • Installieren Sie typings und / oder laden Sie es6-shim.d.ts manuell herunter , was ich auch vermeiden würde, weil ich nach einer Lösung suche, die mich nicht dazu zwingt, den VS2015 zu verlassen GUI.

Nach einer Menge Nachforschungen kam ich mit dieser Problemumgehung heraus, die das Problem scheinbar mit ein paar einfachen Schritten zu beheben scheint :

  • Fügen Sie typings in der package.json -Datei des Projekts hinzu.
  • Fügen Sie einen script -Block in derselben package.json -Datei hinzu, um Typings nach jeder NPM -Aktion auszuführen / zu aktualisieren.
  • fügen Sie eine typings.json -Datei in den Stammordner des Projekts ein, die einen Verweis auf core-js enthält (insgesamt besser als es6-shim atm).

Das ist es.

Sie können auch diesen Beitrag ansehen > für weitere Details zum Thema.

    
Darkseal 27.07.2016 23:54
quelle
1

Das hat es für mich behoben:

%Vor%

über der Hauptdatei .ts.

    
July.Tech 21.07.2016 21:20
quelle
0

Ich habe dieses Problem gelöst, indem ich es6-shim.d.ts von DefinitelyTyped heruntergeladen habe und es in boot.ts referenziert habe, wo ich angular2 bootstrap mit diesem Code habe

%Vor%

Ich habe diese Referenz auch entfernt, da sie Konflikte verursachte.

%Vor%

Dies behebt meine Probleme und meine Dateien wurden korrekt und ohne Fehler kompiliert.

    
Fayez Mutairi 06.04.2016 19:37
quelle
0

Eine andere Lösung besteht darin, eine Referenz zu

hinzuzufügen %Vor%

oben in der Datei, in der Sie eckig booten und sicherstellen, dass Sie

hinzufügen %Vor%

zu "compilerOptions" Ihrer tsconfig.json etwa:

%Vor%     
Fayez Mutairi 09.04.2016 15:46
quelle
0

Es kann einen anderen Grund geben. Ich bin in der Lage, Ihren Fehler zu reproduzieren, wenn ich das Verzeichnis node_modules nicht ausschließe. Möglicherweise müssen Sie sicherstellen, dass Sie keine Projektdatei irgendwo haben.

%Vor%

Das Problem wird hier beschrieben: Ссылка . Die Typoskript-Kompilierung ignoriert im Prinzip Ihre tsconfig.json

    
Andres M 23.04.2016 19:48
quelle
0

Mein Problem wurde durch die Datei boot.ts / main.ts verursacht. Das Problem wurde behoben, indem in der ersten Zeile der Verweis auf die Datei "browser.d.ts" hinzugefügt wurde:
///<reference path="../node_modules/angular2/typings/browser.d.ts"/>

    
Diego Torres 09.05.2016 22:29
quelle
0

Ich denke nicht, dieses Problem zu lösen, indem Sie ///<reference path""/> zu Ihrer main.ts hinzufügen (oder wo immer Sie Angular2 bootstrappen) ist die ideale Lösung. Das Problem, mit dem Sie konfrontiert werden, hängt mit der Platzierung von tsconfig.json und dem Gulp-Skript zusammen, das Sie zur Einrichtung Ihres Angular2-Projekts verwenden. Bevor ich Ihnen weiterhelfen kann, können Sie Folgendes überprüfen?

  1. Haben Sie das npm-Skript ausgeführt, um Typings zu installieren (z. B. typings install), so dass es in Ihrem Projekt einen Typisierungsordner gibt? Welche Ordner befinden sich in Ihrem Ordner typings ? %Code%? %Code%?
  2. Was ist der Inhalt Ihrer Schluckaufgabe, um Typoskript zu kompilieren? hast du globals oder browser oder etwas anderes benutzt?

Das Verzeichnis, das Ihre gulp-typescript -Datei enthält, wird als Stammverzeichnis Ihres TypeScript-Projekts betrachtet. Daher versuchen alle .ts / .d.ts Dateien in Ihrem TypeScript-Projekt kompiliert zu werden (einschließlich Dateien in Ihrem gulp-tsc Ordner und / oder tsconfig.json Ordner. Ich sehe, dass Sie ein "exclude" eingefügt haben: [" node_modules "] zu Ihrem tsconfig.json, so dass das Problem mit dem Namen nicht gefunden werden kann, kommt nicht aus dem typings -Ordner (der wahrscheinlich aus Ihrem www/libs -Ordner und / oder node_modules -Ordner stammt.

Ich bin mir ziemlich sicher, dass du das Problem typings auflöst, ohne www/libs am Anfang deiner Bootstrap-Datei (main.ts am wahrscheinlichsten) hinzufügen zu müssen, indem du ein Extra zu deinem "exclude" in deinem% co_de hinzufügst % oder deine Skulptur in deinem Cannot find name Promise .

Verstehen Sie mich nicht falsch, wenn Sie ///<reference path""/> hinzufügen, wird Ihr Problem gelöst, aber ich halte es nicht für die ideale Lösung.

    
kimbaudi 21.07.2016 22:28
quelle
0

Ich habe hier alle möglichen Suggestionen ausprobiert und dachte, dass alles richtig konfiguriert sein sollte. Die Fehler zeigten sich immer noch.

Was in meinem Fall geholfen hat: Ich habe alle geöffneten Dateiregisterkarten in Visual Studio geschlossen und die Lösung erneut erstellt. Et voilà, die Fehler waren weg.

    
martinoss 11.08.2016 07:51
quelle
0

Uprate für VS2015 mit Angular2 RC5 :

(Diese Antwort geht davon aus, dass Sie im Allgemeinen dem angular2 Quick Start bei angular.io folgen und versuchen, ihn in einem VS2015-Projekt zum Laufen zu bringen.)

Fügen Sie der Datei main.ts die folgende Zeile hinzu (passen Sie den Pfad entsprechend der tatsächlichen Dateistruktur Ihres Projekts an):

/// & lt; Referenzpfad="../ typings / globals / core-js / index.d.ts" / & gt;

Die Typisierungsdatei, auf die oben verwiesen wird, wird beim Erstellen basierend auf dem Inhalt der Datei typings.json automatisch importiert.

Sie müssen möglicherweise auch eine Zeile zu Ihrer .csproj-Projektdatei hinzufügen, um das Projekt zu kompilieren (VS2015 Update 3 ignoriert derzeit die Zeile tsconfig.json für "experimentalDecorators"). Um dies zu tun, entladen Sie zunächst Ihr Projekt, indem Sie im Solution Explorer-Fenster mit der rechten Maustaste auf Ihr Projekt klicken und dann auf "Projekt entladen" klicken. Öffnen Sie Ihre .csproj-Datei und suchen Sie nach einem & lt; PropertyGroup & gt; Knoten, der andere & lt; Typescript ... & gt; Elemente. Fügen Sie vor dem schließenden Tag ein Element für TypeScript-Experimentaldekoratoren wie folgt hinzu:

& lt; PropertyGroup Condition="'$ (Konfiguration) | $ (Plattform)' == 'Debug | AnyCPU'" & gt;

...

& lt; TypeScriptExperimentalDecorators & gt; true & lt; / TypeScriptExperimentalDecorators & gt;

& lt; / PropertyGroup & gt;

Laden Sie Ihr Projekt und erstellen Sie es neu. Es sollte jetzt ohne Fehler kompilieren. Wenn weiterhin Probleme auftreten, stellen Sie sicher, dass Sie die neueste Version von TypeScript installiert haben (mindestens 1.8.x). Wechseln Sie in Visual Studio zu Extras & gt; Erweiterungen und Updates ... und suchen nach TypeScript. Installieren Sie die Erweiterung "TypeScript 1.8.x für Visual Studio 2015". Auch verfügbar unter Ссылка .

Wenn Sie nodejs installiert haben, können Sie TypeScript über die Befehlszeile installieren, indem Sie den folgenden Befehl eingeben: "npm install -g typescript". Überprüfen Sie Ihre installierte TypeScript-Version in einem Node.js-Befehlsfenster mit dem Befehl: "tsc -v". Wenn Sie diesen Befehl über ein Standardbefehlsfenster ausführen, wird wahrscheinlich nur "Version 1.0.3.0" anstelle der erwarteten Version 1.8.x angezeigt. (Weitere Informationen finden Sie unter Synchronisieren von Node.js mit VS2015 unter Ссылка )

Hoffe das hilft jemandem.

    
Bit Monkey 10.08.2016 01:42
quelle
0

Für mich war das Thema nicht Angular2-spezifisch, da ich tatsächlich PolymerTS verwende. Mit dem Promise-Polyfill konnte ich keine Versprechen in meinen Polymer-Komponenten-TS-Dateien verwenden. Die Lösung für mich war die Installation des Typs für Promise von NPM mit dem folgenden Befehl.

%Vor%

Für mich musste ich nicht einmal auf die d.ts-Datei in meiner Polymer ts-Datei verweisen. Habe gerade gearbeitet. Sie müssen jedoch die Datei "index.d.ts", die sich im Verzeichnis "es6-promise" befindet, einfach in die Datei ziehen, in der Sie das Promise-Objekt aufrufen möchten. Dadurch wird automatisch die Referenz für Sie erstellt.

    
Dean Martin 26.04.2017 11:26
quelle
0

Ändern Sie das Ziel in Ihrem tsconfig.json auf "es6"

%Vor%

Oder installieren Sie TypeScript für Visual Studio 2015 , um dieses Problem zu lösen, ohne tsconfig.json

zu ändern

Ссылка

    
Jie Wang 26.04.2017 12:38
quelle