从VS 2015 Task Runner资源管理器运行时,Gulp任务失败,但不是从命令提示符运行

Jaa*_*ans 13 javascript node.js gulp visual-studio-2015 task-runner-explorer

我有一些Gulp工作做典型clean,build,release一个网站的行动.在我看来,没有什么特别不寻常的.(实际上它与Aurelia TypeScript骨架非常相似.)

大多数团队使用GulpPowerShell /命令提示符进行前端开发,并使用VS Code/Sublime进行编辑.一些团队使用Visual Studio 2015做同样的事情.

build从命令提示符运行任务工作正常,但如果我们从Visual Studio的Task Runner Explorer运行它,它会给我们一个错误.

但是,运行其他任务(例如clean)可以在命令提示符和VS Task Runner Explorer中正常工作.

有趣的是,Task Runner explorer甚至会输出它调用以运行任务的进程的副本.如果我复制确切的命令(见下文),并运行在命令提示符下,它并没有给出错误.它仅在从Task Runner Explorer运行时发生,并且仅在该任务中运行.

这是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)
Run Code Online (Sandbox Code Playgroud)

我的Google-Fu在错误消息/堆栈跟踪或相关搜索中显示为空.

是什么赋予了?

更新:根据@ josh-graham,VS调用的Node版本如下所示.

[10:12:48] Starting 'clean'...
Version: v0.10.31
[10:12:48] Finished 'clean' after 42 ms
Run Code Online (Sandbox Code Playgroud)

scn*_*iro 44

VS附带旧版本的Node.js,并不表示即使更新2即将推出,更新是否会很快到来.您的系统可能有更新的版本.要在Visual Studio中修复此问题,您需要确定PATH的优先级(假设您的PATH上有节点).只需找到"外部Web工具"选项,并将$(PATH)移动到以下顶部...

在此输入图像描述

有关更多详细信息,请参阅此内容 - 在Visual Studio 2015中自定义外部Web工具.此外,抱歉图片,但它似乎是解释这个问题最直接的方式.


在看到这个答案越来越受欢迎以帮助他人之后,我继续深入研究为什么这仍然是一个问题.我看着当前Node.js的工具的话为更新3仍然没有看到关于他们的更新汇总版本如下的任何信息...

  • 更快,更好的ES6 IntelliSense
  • 更可靠的调试
  • 改进的单元测试经验(包括磁带支持)
  • 更多项目类型中的.npm命令

稍微走下兔子洞,看看他们的确切版本选择是否明显(不是这样)我确实在他们的github存储库中找到了以下内容 ......

this.versions = {node: '0.10.0', v8: '3.14.5.8'};
Run Code Online (Sandbox Code Playgroud)

这可能吗?不确定,但我认为他们仍然没有使用更新版本的Node.js运送VS.