13

我有一些Gulp任务要为网站执行典型的clean, build,release操作。在我的脑海里没有什么特别不寻常的。(实际上它与 Aurelia TypeScript 骨架非常相似。)

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

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

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

有趣的是,Task Runner 资源管理器甚至会输出它为运行任务而调用的进程的副本。如果我复制那个确切的命令(见下文)并在命令提示符下运行它,它不会给出错误。它仅在从 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
4

2 回答 2

44

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。

于 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 回答