一尘不染

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

node.js

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

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

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

但是,clean从命令提示符和VS 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)

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

是什么赋予了?

更新:根据@ josh-graham,下面列出了VS所调用的Node版本。

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

阅读 292

收藏
2020-07-07

共1个答案

一尘不染

VS附带了旧版本的Node.js,即使更新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。

2020-07-07