任务运行程序资源pipe理器无法加载任务

我正在使用VS2015和Gulp。 我打开任务运行资源pipe理器,并刷新,这出现在日志中:

Failed to run "C:\Projects\Test\Gulpfile.js"... cmd.exe /c gulp --tasks-simple Error: `libsass` bindings not found in C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\binding.node. Try reinstalling `node-sass`? at Object.sass.getBinaryPath (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\extensions.js:148:11) at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\lib\index.js:16:36) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (C:\Projects\Test\node_modules\gulp-sass\index.js:163:21) at Module._compile (module.js:456:26) 

所以我尝试在PowerShell中运行cmd.exe /c gulp --tasks-simple ,在相同的目录下,它工作正常 – 它返回一个任务列表。

我也能够运行我的SASS相关的任务,所以我不知道为什么这是抱怨SASS,当它通过VS运行,而不是直接在命令行。

我最近从VS2013迁移出现了同样的问题。

正如Josh在他的评论中指出的那样,Visual Studio 2015提供了较旧版本的Node。 如果您不想使用Visual Studio内置的任何版本的节点,可以告诉它使用已经安装的版本。

  • 转到:工具>选项>项目和解决scheme>外部Web工具
  • 重新sorting,使$(PATH)高于$(DevEnvDir)\Extensions\Microsoft\Web Tools\External

这也适用于其他工具,如Grunt,Bower和Gulp。

在这里find了Mads Kristensen的解决scheme。

看起来gulp-sass在不同的位置searchnode-sass。 这是一个临时解决scheme。

  1. 在c:\ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \目录下创build一个名为win32-ia32-11的新目录。

  2. 转到https://github.com/sass/node-sass-binaries并下载win32-ia32-11_binding.node。;

  3. 将win32-ia32-11_binding.node文件复制到c:\ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \中,并将其重命名为binding.node

Visual Studio Gulp  - 任务执行者

我已经尝试了所有上述解决scheme,但它不起作用,我在这里find了另一种解决scheme

您必须强制Visual Studio与您的Node.js版本一起运行:

  1. 转到Visual Studio 2015中的Tools > Options
  2. 转至“ Projects and Solutions >“ External Web Tools
  3. 添加以下path: C:\Program Files\nodejs

解决我的问题的唯一解决scheme是重新安装NPM Task Runner。 您可以从市场上的以下链接下载它。
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner

node-sass运行安装脚本来下载所需的二进制文件。 如果没有环境variables,设置.npmrcvariables或进程参数,则使用当前的进程平台,体系结构和节点ABI版本来确定二进制文件。 因此,如果在一个应用程序中运行节点安装,然后尝试在具有不同平台/体系结构/ ABI的应用程序中运行node-sass,则该二进制文件将不会被下载。 解决scheme是手动下载二进制文件或使用环境variables(SASS_BINARY_NAME)或.npmrcvariables(sass_binary_name)修复二进制版本

你可以在node-sass \ lib \ extensions.js的getBinaryPath函数中看到这个逻辑

另请参阅: 节点Sass无法为当前环境find绑定