任务运行程序资源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。
-
在c:\ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \目录下创build一个名为win32-ia32-11的新目录。
-
转到https://github.com/sass/node-sass-binaries并下载win32-ia32-11_binding.node。;
-
将win32-ia32-11_binding.node文件复制到c:\ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-ia32-11 \中,并将其重命名为binding.node
我已经尝试了所有上述解决scheme,但它不起作用,我在这里find了另一种解决scheme
您必须强制Visual Studio与您的Node.js版本一起运行:
- 转到Visual Studio 2015中的
Tools
>Options
- 转至“
Projects and Solutions
>“External Web Tools
- 添加以下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绑定