Task Runner Explorer 无法加载任务
Task Runner Explorer can't load tasks
我正在使用 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
,它工作正常 - 它是 returns 任务列表。
我也能够 运行 我的 SASS 相关任务就好了,所以我不确定为什么它在 运行 时抱怨 SASS =] 通过 VS 但不是直接在命令行上。
似乎 gulp-sass 在不同的位置搜索节点-sass。这是一个临时解决方案。
在 c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\
中创建一个名为 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
我最近从 VS2013 迁移时遇到了同样的问题。
正如 Josh 在他的评论中指出的那样 Visual Studio 2015 年附带了旧版本的 Node。如果你不想受制于 Visual Studio 内置的任何版本的 Node,你可以告诉它使用你已经安装的版本。
- 转到:工具 > 选项 > 项目和解决方案 > 外部 Web 工具
- 重新排序,使
$(PATH)
高于 $(DevEnvDir)\Extensions\Microsoft\Web Tools\External
这也适用于其他工具,如 Grunt、Bower 和 Gulp。
找到 Mads Kristensen here 的解决方案。
For Visual Studio 2017, we can find the setting at
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools
我已经尝试了以上所有解决方案,但它不起作用,我找到了另一个解决方案 here。
你必须用你的 Node.js 版本强制 Visual Studio 运行:
- 前往
Tools
> Options
Visual Studio 2015
- 前往
Projects and Solutions
> External Web Tools
- 添加以下路径:
C:\Program Files\nodejs
解决我的问题的唯一方法是重新安装 NPM Task Runner。
您可以在市场上关注 link 下载它。
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner
node-sass 运行s 用于下载所需二进制文件的安装脚本。如果没有设置环境变量、.npmrc 变量或进程参数,则使用当前进程平台、体系结构和节点 ABI 版本确定二进制文件。因此,如果您 运行 node install 在一个应用程序中然后尝试 运行 node-sass 在具有不同 platform/architecture/ABI 的应用程序中,二进制文件将不会被下载.解决方案是手动下载二进制文件或使用环境变量 (SASS_BINARY_NAME) 或 .npmrc 变量 (sass_binary_name)
修复二进制版本
你可以在 node-sass\lib\extensions.js
的 getBinaryPath 函数中看到这个逻辑
另请参阅:Node Sass could not find a binding for your current environment
我正在使用 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
,它工作正常 - 它是 returns 任务列表。
我也能够 运行 我的 SASS 相关任务就好了,所以我不确定为什么它在 运行 时抱怨 SASS =] 通过 VS 但不是直接在命令行上。
似乎 gulp-sass 在不同的位置搜索节点-sass。这是一个临时解决方案。
在 c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\
中创建一个名为 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
我最近从 VS2013 迁移时遇到了同样的问题。
正如 Josh 在他的评论中指出的那样
- 转到:工具 > 选项 > 项目和解决方案 > 外部 Web 工具
- 重新排序,使
$(PATH)
高于$(DevEnvDir)\Extensions\Microsoft\Web Tools\External
这也适用于其他工具,如 Grunt、Bower 和 Gulp。
找到 Mads Kristensen here 的解决方案。
For Visual Studio 2017, we can find the setting at
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools
我已经尝试了以上所有解决方案,但它不起作用,我找到了另一个解决方案 here。
你必须用你的 Node.js 版本强制 Visual Studio 运行:
- 前往
Tools
>Options
Visual Studio 2015 - 前往
Projects and Solutions
>External Web Tools
- 添加以下路径:
C:\Program Files\nodejs
解决我的问题的唯一方法是重新安装 NPM Task Runner。
您可以在市场上关注 link 下载它。
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner
node-sass 运行s 用于下载所需二进制文件的安装脚本。如果没有设置环境变量、.npmrc 变量或进程参数,则使用当前进程平台、体系结构和节点 ABI 版本确定二进制文件。因此,如果您 运行 node install 在一个应用程序中然后尝试 运行 node-sass 在具有不同 platform/architecture/ABI 的应用程序中,二进制文件将不会被下载.解决方案是手动下载二进制文件或使用环境变量 (SASS_BINARY_NAME) 或 .npmrc 变量 (sass_binary_name)
修复二进制版本你可以在 node-sass\lib\extensions.js
的 getBinaryPath 函数中看到这个逻辑另请参阅:Node Sass could not find a binding for your current environment