web-dev-qa-db-ja.com

VS 2015 Task Runner Explorerから実行するとGulpタスクが失敗するが、コマンドプロンプトからは失敗しない

Webサイトの一般的なGulpcleanbuildアクションを実行するためのreleaseタスクがいくつかあります。私の心の中で特に珍しいことは何もありません。 (実際、Aurelia TypeScriptスケルトンと非常によく似ています。)

チームのほとんどは、PowerShell /コマンドプロンプトからGulpを使用し、VS Code/Sublimeで編集するフロントエンド開発を行っています。一部のチームは、Visual Studio2015を使用して同じことを行います。

コマンドプロンプトからbuildタスクを実行すると問題なく動作しますが、VisualStudioのTaskRunner Explorerから実行すると、エラーが発生します。

ただし、他のタスク(cleanなど)の実行は、コマンドプロンプトとVSタスクランナーエクスプローラーの両方から問題なく機能します。

興味深いことに、タスクランナーエクスプローラーは、タスクを実行するために呼び出すプロセスのコピーも出力します。その正確なコマンド(以下を参照)をコピーしてコマンドプロンプトで実行すると、notエラーが発生します。これは、タスクランナーエクスプローラーから実行した場合にのみ発生し、その1つのタスクのみが発生します。

タスクランナーエクスプローラーからのタスクコマンドラインと関連するエラー出力は次のとおりです。

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)

私のGoogle-Fuは、エラーメッセージ/スタックトレースまたは関連する検索で空になりました。

何が得られますか?

更新:@ josh-grahamによると、VSによって呼び出されるNodeのバージョンは以下にリストされています。

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

VSには古いバージョンのNode.jsが付属しており、 pdate 2がリリースされます であっても、アップデートがすぐに提供されるかどうかは示されません。システムのバージョンが新しい可能性があります。 Visual Studioでこれを修正するには、PATHに優先順位を付ける必要があります(PATHにノードがあると仮定します)。 「外部Webツール」オプションを見つけて、$(PATH)を次の先頭に移動するだけです...

enter image description here

詳細については、これを参照してください Visual Studio 2015で外部Webツールをカスタマイズします 。また、写真は申し訳ありませんが、問題を説明する最も簡単な方法のようです。


この答えが他の人を助けるために人気が高まっているのを見た後、私はこれがまだどういうわけか問題である理由を掘り下げ続けました。現在の Node.jsツールの更新3に関するコメント およびまだのバージョンに関する情報が表示されません更新の概要は次のとおりです。

  • より速く、より良いES6 IntelliSense
  • より信頼性の高いデバッグ
  • 改善されたユニットテストエクスペリエンス(テープサポートを含む)
  • より多くのプロジェクトタイプでの.npmコマンド

うさぎの穴を少し下って、正確なバージョンの選択が明白であるかどうかを確認するために(そうではありません)、私は githubリポジトリで以下を見つけてください ...

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

これでいいの?よくわかりませんが、新しいバージョンのNode.jsでVSを出荷することにはまだ参加していないと思います。

44
scniro

VisualStudioがシェルアウトしているノードバージョンを印刷できるかどうかを確認します。 VisualStudioが使用しているNodeのバージョンは、コンソールで使用しているバージョンとは異なる可能性があります。 Mapコレクションは、Node v4.0.0 https://nodejs.org/en/blog/release/v4.0.0/ で導入されたようです。

を使用してNodeバージョンをログに記録できるはずです。

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

1
Josh Graham