13

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

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

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

ただし、他のタスク (例: clean) の実行は、コマンド プロンプトと VS Task Runner Explorer の両方から問題なく機能します。

興味深いことに、タスク ランナー エクスプローラーは、タスクを実行するために呼び出すプロセスのコピーも出力します。その正確なコマンド(以下を参照)をコピーしてコマンドプロンプトで実行すると、エラーは発生しません。Task Runner Explorer から実行した場合にのみ発生し、その 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
4

2 に答える 2

44

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

ここに画像の説明を入力

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


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

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

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

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

これでしょうか?確かではありませんが、Node.js の新しいバージョンを使用して VS を出荷することにはまだ取り組んでいないと思います。

于 2016-03-10T00:26:30.063 に答える
1

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

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

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

于 2016-03-09T16:44:37.837 に答える