Task Runner Explorer 无法加载任务

Posted

技术标签:

【中文标题】Task Runner Explorer 无法加载任务【英文标题】:Task Runner Explorer can't load tasks 【发布时间】:2015-09-26 21:21:16 【问题描述】:

我正在使用 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。

【问题讨论】:

【参考方案1】:

我最近从 VS2013 迁移时遇到了同样的问题。

正如 Josh 在他的评论 here 中指出的那样,Visual Studio 2015 附带了旧版本的 Node.js。如果您不想被 Visual Studio 中内置的任何版本的 Node 卡住,您可以告诉它使用您已经安装的版本。

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

这也适用于 Grunt、Bower 和 Gulp 等其他工具。

由 Mads Kristensen here 找到此解决方案。

对于 Visual Studio 2017,我们可以在 Tools &gt; Options &gt; Projects and Solutions &gt; Web Package Management &gt; External Web Tools

找到设置

【讨论】:

是的,我最终做了同样的事情,但忘记回到这里并添加一百万又一的评论。谢谢! 有人把这个解决方案放到错误信息中! #咧嘴笑# 在 VS2017 中是工具 > 选项 > 项目和解决方案 > Web 包管理 > 外部 Web 工具 在VS2017中,还需要将$(PATH)放在$(VSINSTALLERDIR)\Web\External之上 在 VS2017 中,我还必须将 $(PATH) 移到 .\node_modules\.bin 上方(基本上,我必须将它移到顶部。)【参考方案2】:

node-sass 运行安装脚本来下载所需的二进制文件。如果没有设置环境变量、.npmrc 变量或进程参数,则使用当前进程平台、架构和 Node ABI 版本确定二进制文件。因此,如果您在一个应用程序中运行 node install,然后尝试在具有不同平台/架构/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

【讨论】:

【参考方案3】:

我已经尝试了以上所有解决方案,但都不起作用,我找到了另一个解决方案here。

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

    在 Visual Studio 2015 中转到 Tools > Options 转到Projects and Solutions > External Web Tools 添加以下路径:C:\Program Files\nodejs

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

gulp-sass 似乎在不同的位置搜索 node-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

【讨论】:

啊,我明白了。看来我已经安装了所有节点模块的 64 位版本,但它必须在 32 位上下文中运行,因为我在 32 位的 VS 中。我猜。而且我似乎找不到强制安装 32 位软件包的好方法。有点惊讶我找不到关于这个主题的更多信息,似乎很多人可能会遇到这个问题。 而且我也找不到强制 NPM 安装所有包的 ia32 版本的好方法。我尝试使用适当的配置选项创建.npmrc 文件,但没有运气。即使在 32 位 PS 控制台中运行 npm install,64 位版本仍在安装中。 这太疯狂了。我安装了 32 位版本的 node,然后重新安装了我所有的包,这次安装了 32 位版本的 node-sass,但绑定是 win32-ia32-14 而不是 win32-ia32-11 - 出于某种原因,这就是 @987654328 @正在寻找... 顺便说一句,您的解决方案有效,但我认为它是一个创可贴——我不希望这是其他开发人员第一次启动它时必须采取的步骤! 啊,那是 0.10.31 32 位:nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi

以上是关于Task Runner Explorer 无法加载任务的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 Task Runner Explorer 未在发布时运行事件

markdown 在Mac上安装Robo PHP Task Runner

markdown 在Mac上安装Robo PHP Task Runner

无法在 Internet Explorer 10 上加载 Google Cloud Endpoints

开机时说不能加载配置文件,并且桌面上很多图标都没了,怎么办

weka 3.7 explorer 无法对文本进行分类