12

Ich habe einige Gulp Aufgaben die typischen clean, build, release Aktionen für eine Website zu tun. Nichts besonders ungewöhnlich in meinem Kopf. (In der Tat ist es sehr ähnlich wie Aurelia Typoskript Skelett.)Gulp Aufgabe versagt, wenn sie von VS 2015 Task-Runner-Explorer laufen, aber nicht über die Eingabeaufforderung

Großteil des Teams hat Front-End-Entwicklung mit Gulp aus einer Powershell/Eingabeaufforderung und Bearbeitung mit VS-Code/Sublime. Ein Teil des Teams verwendet dasselbe Visual Studio 2015.

Das Ausführen der build Aufgabe von der Eingabeaufforderung funktioniert einwandfrei, aber wenn wir es von Visual Studio Task Runner Explorer ausführen, gibt es uns einen Fehler.

Die Ausführung der anderen Aufgaben (z. B. clean) funktioniert jedoch einwandfrei von der Eingabeaufforderung und dem VS Task Runner Explorer.

Interessanterweise gibt der Task Runner-Explorer sogar eine Kopie des Prozesses aus, der zum Ausführen der Task aufgerufen wird. Wenn ich diesen genauen Befehl (siehe unten) kopiere und das in einer Eingabeaufforderung ausführe, gibt es nicht den Fehler geben. Es passiert nur, wenn es vom Task Runner Explorer ausgeführt wird, und nur diese eine Aufgabe.

Hier ist die Aufgabe Befehlszeile und die damit verbundene Fehlerausgabe aus dem Task-Runner Explorer:

cmd.exe /c gulp -b "D:\Development\xxxx\WebSite" --color --gulpfile "D:\Development\xxxx\WebSite\Gulpfile.js" build 
[20:40:42] Using gulpfile D:\Development\xxxx\WebSite\Gulpfile.js 
[20:40:42] Starting 'build'... 
[20:40:42] Starting 'clean'... 
[20:40:42] Finished 'clean' after 5.74 ms 
[20:40:42] Starting 'build-system'... 
[20:40:42] Starting 'build-html'... 
[20:40:42] Starting 'build-css'... 
[20:40:42] Finished 'build-css' after 31 ms 
[20:40:43] Finished 'build-html' after 162 ms 
D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\builder.js:153 
     var newLastBuildVersion = new Map(); 
            ^
ReferenceError: Map is not defined 
    at Object.build (D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\builder.js:153:39) 
    at Stream.<anonymous> (D:\Development\xxxx\WebSite\node_modules\gulp-tsb\lib\index.js:40:22) 
    at _end (D:\Development\xxxx\WebSite\node_modules\through\index.js:65:9) 
    at Stream.stream.end (D:\Development\xxxx\WebSite\node_modules\through\index.js:74:5) 
    at DestroyableTransform.onend (D:\Development\xxxx\WebSite\node_modules\readable-stream\lib\_stream_readable.js:545:10) 
    at DestroyableTransform.g (events.js:180:16) 
    at DestroyableTransform.emit (events.js:117:20) 
    at endReadableNT (D:\Development\xxxx\WebSite\node_modules\readable-stream\lib\_stream_readable.js:960:12) 
Process terminated with code 8. 
    at afterTick (D:\Development\xxxx\WebSite\node_modules\process-nextick-args\index.js:18:8) 
    at process._tickCallback (node.js:419:13) 

Mein Google-Fu auf der Fehlermeldung/Stack-Trace oder verwandte Suchanfrage leer gekommen ist.

Was gibt?

UPDATE: Laut @ josh-graham ist die Version von Node, die von VS aufgerufen wird, unten aufgeführt.

[10:12:48] Starting 'clean'... 
Version: v0.10.31 
[10:12:48] Finished 'clean' after 42 ms 

Antwort

41

VS Schiffe mit einer alten Version von Node.js und tut anmelden können nicht Geben Sie an, ob in naher Zukunft ein Update erfolgen soll, auch mit Update 2 coming out. Ihr System hat wahrscheinlich eine neuere Version. Um dies in Visual Studio zu beheben, müssen Sie Ihren PATH priorisieren (vorausgesetzt, Sie haben einen Knoten auf Ihrem PATH). finden Sie einfach die "External Web Tools" Option und $ (PATH) an die Spitze der folgenden bewegen ...

enter image description here

dieses Detail für mehr See - Customize external web tools in Visual Studio 2015. Entschuldigung für das Bild, aber es scheint der einfachste Weg zu sein, das Problem zu erklären.

Nachdem diese Antwort in der Popularität wächst, um anderen zu helfen, fuhr ich fort zu graben, warum das immer noch irgendwie ein Problem ist.Ich sah in den aktuellen Node.js Tools remarks for update 3 und noch sehe keine Informationen bezüglich einer Version in ihrer Zusammenfassung von Updates wie folgt ...

  • Faster, better ES6 IntelliSense
  • More reliable debugging
  • Improved Unit Testing experiences (including Tape support)
  • .npm command in more project types

Um den Kaninchenbau ein wenig nach unten gehen, um zu sehen, wenn ihre genaue Version Wahl ist eklatant (was es nicht ist) ich habe find the following on their github repository ...

this.versions = {node: '0.10.0', v8: '3.14.5.8'}; 

Könnte es das sein? Unsicher, aber ich denke, sie sind immer noch nicht an Bord mit dem Versenden von VS mit neueren Versionen von Node.js.

+1

Ha-ha ... wird dies gleichzeitig passieren! Danke für die klare Antwort. Ich überarbeite die richtige Antwort. Auch das Bild ist noch einfacher zu folgen als Mads Post. – Jaans

+0

Für Google, ich bekam diesen Fehler: Node Sass konnte keine Bindung für Ihre aktuelle Umgebung finden: Windows 32-Bit mit Node.js 5.x – dwbartz

+1

Dies gilt auch für die neu veröffentlichte Visual Studio 2017. –

1

Sehen Sie, ob Sie die Knotenversion, die Visual Studio ausschält, ausdrucken können. Es ist wahrscheinlich, dass die von Visual Studio verwendete Version von Node anders ist als die, die Sie an der Konsole verwenden. Die Map Sammlung sieht aus wie es in Knoten v4.0.0 eingeführt wurde https://nodejs.org/en/blog/release/v4.0.0/

Sie sollten die Node-Version mit

console.log('Version: ' + process.version);

+0

Ich denke, Sie könnten hier auf etwas sein. Die Ausgabeversion ist 'v0.10.31'!? Dies ist trotz des installierten Knotens v4.2.6 der Fall. Jetzt für VS mit dem Programm zu bekommen ... – Jaans