我有一些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 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
答案 0 :(得分:44)
VS附带旧版本的Node.js,并未表明即使使用Update 2 coming out,更新是否会很快到来。您的系统可能有更新的版本。要在Visual Studio中修复此问题,您需要确定PATH的优先级(假设您的PATH上有节点)。只需找到“外部Web工具”选项,然后将$(PATH)移到以下顶部...
有关详细信息,请参阅此处 - Customize external web tools in Visual Studio 2015。此外,对图片感到抱歉,但这似乎是解释问题最直接的方式。
在看到这个答案越来越受欢迎以帮助他人之后,我继续深入研究为什么这仍然是一个问题。我查看了当前的Node.js Tools remarks for update 3和仍然在其更新摘要中没有看到有关版本的任何信息,如下所示...
- 更快,更好的ES6智能感知
- 更可靠的调试
- 改进的单元测试体验(包括磁带支持)
- .npm命令在更多项目类型中
稍微走下兔子洞,看看他们的确切版本选择是否明显(不是这样)我做了find the following on their github repository ......
this.versions = {node: '0.10.0', v8: '3.14.5.8'};
这可能吗?不确定,但我认为他们仍然没有使用更新版本的Node.js运送VS.
答案 1 :(得分: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);