我正在使用VS2015和Gulp。我打开Task Runner Explorer并点击刷新,这会显示在日志中:
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相关的任务,所以我不确定为什么当它通过VS运行而不是直接在命令行上运行时抱怨SASS。
答案 0 :(得分:310)
我最近从VS2013迁移出了同样的问题。
正如Josh在评论here中指出的那样,Visual Studio 2015附带了旧版本的Node。如果您不想使用Visual Studio中内置的任何版本的Node,您可以告诉它使用您已安装的版本。
$(PATH)
高于$(DevEnvDir)\Extensions\Microsoft\Web Tools\External
这也适用于其他工具,如Grunt,Bower和Gulp。
Mads Kristensen here找到了这个解决方案。
对于Visual Studio 2017,我们可以在
找到设置Tools > Options > Projects and Solutions > Web Package Management > External Web Tools
答案 1 :(得分:7)
似乎gulp-sass在不同的位置搜索node-sass。这是一个临时解决方案。
在c:\ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \
转到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
答案 2 :(得分:2)
我已经尝试了以上所有解决方案,但它不起作用,我找到了另一个解决方案here。
您必须使用Node.js版本强制运行Visual Studio:
Tools
&gt; Visual Studio 2015中的Options
Projects and Solutions
&gt; External Web Tools
C:\Program Files\nodejs
答案 3 :(得分:0)
解决我问题的唯一解决方案是重新安装NPM Task Runner。 您可以从市场上的以下链接下载 https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner
答案 4 :(得分:0)
node-sass运行安装脚本以下载所需的二进制文件。如果没有环境变量,.npmrc变量或进程参数集,则使用当前进程平台,体系结构和Node ABI版本确定二进制文件。因此,如果在一个应用程序中运行节点安装,然后尝试在具有不同平台/体系结构/ ABI的应用程序中运行node-sass,则不会下载二进制文件。解决方案是手动下载二进制文件或使用环境变量(SASS_BINARY_NAME)或.npmrc变量(sass_binary_name)修复二进制版本
你可以在node-sass \ lib \ extensions.js中的getBinaryPath函数中看到这个的逻辑
另请参阅:Node Sass could not find a binding for your current environment