Visual Studio 2017中的gulp集成无法工作

7

我正在尝试将gulp集成到Visual Studio 2017中。在命令行上运行正常。但是,在VS2017的任务运行器资源管理器中,显示“加载失败,请查看输出窗口。”

输出窗口显示以下内容:

Failed to run "<ProjectPath>\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
<ProjectPath>\node_modules\node-sass\lib\binding.js:15
      throw new Error(errors.missingBinary());
      ^
Error: Missing binding <ProjectPath>\node_modules\node-sass\vendor\win32-x64-47\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 5.x
Found bindings for the following environments:
  - Windows 64-bit with Node.js 8.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass --force` to build the binding for your current environment.

我尝试运行 npm rebuild node-sass --force 命令,但出现错误提示:Error: Can't find Python executable "C:\Python36\python.EXE", you can set the PYTHON env variable.,我确认该文件已经存在。我不知道我还要深入探究多少了,这似乎是一个VS问题,因为在命令行中一切正常。我希望能够正确地让gulp集成到VS中。
3个回答

24

请将您的VS工具指向您路径上的Node安装。

从错误信息中可以看出,5.x8.x之间存在版本差异 - VS可能是较老的(因为它附带了预打包且过时的node),并且默认设置下占据了执行优先权。

我猜测您通过8.x(外部命令行)实例安装了node-sass,但是VS正在尝试通过VS内部的5.x执行您的gulp任务。 node-sass利用node-gyp通过安装脚本构建二进制文件,并且在不同的版本之间会存在不兼容性。换句话说,该软件包以及许多其他生成二进制文件的软件包都专门针对其安装的node版本进行了定制。总之,node_modules/.bin中的所有内容都是针对8.x构建的,但是当您通过Visual Studio执行这些操作时,它们实际上在5.x上运行。

不用担心,这很容易解决。请查看这个答案,以了解许多人面临的这个长期问题的历史背景。基本上,您希望将$(PATH)放在此列表的顶部,以便始终使用操作系统安装...

enter image description here

一旦您这样做了(为了安全起见) - 删除node_modules,重新安装,然后愉快地编码。VS真的需要停止附带固定版本的node...


1
我刚刚站在桌子旁,慢慢地鼓掌这个答案。 - Mike Cole
哈!现在我把火炬传给你,让你教别人如何应对VS的愚弄。希望如果你觉得这有帮助的话,能授予奖励。 - scniro
啊,我没意识到悬赏奖励是一个单独的操作。我可以在3小时内完成。 - Mike Cole
是的,我今天稍后将要培训一些开发人员。 :-) - Mike Cole
哎呀,+1 好评 - Çağlar Can Sarıkaya

1
我在Visual Studio 2017和2019上都遇到了这个问题。 显然,我的Node安装未在PATH变量中注册(而且我没有权限修改我的工作机器上的此内容),因此我手动添加了指向C:\Program Files\nodejs的链接,并将其移至顶部位置,这对我有用。

Image of Visual Studio 2019 with nodejs moved to the top of the external tools list in the Web Package Management window.


0

这让我感到非常困扰,直到我发现还有一件事情没有配置。即使你按照其他答案中的步骤进行了配置,你仍然可能会遇到相同的错误,特别是如果你的用户文件夹不在安装Node的同一驱动器上。那么,还需要将%APPDATA%\npm添加到外部工具路径中,以便全局安装的Node工具也能被找到。

因此,总的来说,在VS中的外部工具配置应该首先包含这两个路径,按照以下顺序:

  1. C:\Program Files\NodeJS(或者你安装Node的位置)。
  2. %APPDATA%\npm

对于我来说,如果没有第二个路径,所有东西都可以在命令行中正常工作,但在VS中却不能正常工作。添加后,现在在VS中也可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接