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。这是一个临时解决方案。

  1. 在 c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\

  2. 中创建一个名为 win32-ia32-11 的新目录
  3. 转到 https://github.com/sass/node-sass-binaries 并下载 win32-ia32-11_binding.node。

  4. 复制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 运行:

  1. 前往 Tools > Options Visual Studio 2015
  2. 前往 Projects and Solutions > External Web Tools
  3. 添加以下路径: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