Task Runner Explorer не может загружать задачи

Я использую VS2015 и глотаю. Я открываю Task Runner Explorer и нажимаю обновить, и это появляется в журнале:

Failed to run "C:ProjectsTestGulpfile.js"...
cmd.exe /c gulp --tasks-simple
Error: `libsass` bindings not found in C:ProjectsTestnode_modulesgulp-sassnode_modulesnode-sassvendorwin32-ia32-11binding.node. Try reinstalling `node-sass`?
    at Object.sass.getBinaryPath (C:ProjectsTestnode_modulesgulp-sassnode_modulesnode-sasslibextensions.js:148:11)
    at Object.<anonymous> (C:ProjectsTestnode_modulesgulp-sassnode_modulesnode-sasslibindex.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:ProjectsTestnode_modulesgulp-sassindex.js:163:21)
    at Module._compile (module.js:456:26)

поэтому я пытаюсь запустить cmd.exe /c gulp --tasks-simple в PowerShell, в том же каталоге, и он отлично работает - он возвращает список задач.

Я также могу запускать свои задачи, связанные с SASS, просто отлично, поэтому я не уверен, почему это жалуется на SASS, когда он запускается через VS, но не непосредственно в командной строке.

5 ответов


недавно у меня была такая же проблема с миграцией из VS2013.

как отметил Джош в своем комментарии здесь Visual Studio 2015 поставляется со старой версией Node. Если вы не хотите застревать с любой версией узла, встроенной в Visual Studio, вы можете сказать ему использовать версию, которую вы уже установили.

  • перейти к: Инструменты > Параметры > проекты и решения > внешние веб-инструменты
  • переупорядочить так, чтобы $(PATH) выше $(DevEnvDir)\Extensions\Microsoft\Web Tools\External

Это также относится к другим инструментам, таким как хрюканье, Бауэр и глоток.

нашел это решение Мэдс Кристенсен здесь.

для Visual Studio 2017 мы можем найти настройку в
Tools > Options > Projects and Solutions > Web Package Management > External Web Tools


кажется, gulp-sass searches node-sass в другом месте. Вот временное решение.

  1. создать новую папку с именем Win32-архитектурой ia32-11 внутри\c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor

  2. Гото https://github.com/sass/node-sass-binaries и загрузите win32-ia32-11_binding.узел.

  3. копировать в Win32-системах ia32-11_binding.файл узла c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\ и переименуйте его в binding.узел

Visual Studio Gulp - Task Runner


Я пробовал все выше решения, но это не работает, и я нашел другое решение здесь.

вы должны заставить Visual Studio работать с вашим узлом.Яш версия:

  1. на Tools>Options в Visual Studio 2015
  2. на Projects and Solutions>External Web Tools
  3. добавить следующий путь: C:\Program Files\nodejs

единственным решением, которое решило мою проблему, была повторная установка npm Task Runner. Вы можете скачать его по следующей ссылке: marketplace.
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner


node-sass запускает сценарий установки для загрузки необходимого двоичного файла. Если нет переменных окружения .переменные npmrc или аргументы процесса задаются, затем двоичный файл определяется с помощью текущей платформы процесса, архитектуры и версии ABI узла. Поэтому, если вы запустите Node install в одном приложении, а затем попытаетесь запустить node-sass в приложении с другой платформой/архитектурой/ABI, двоичный файл не будет загружен. Раствор вручную загрузить двоичный или чтобы исправить двоичную версию, используя переменную среды (SASS_BINARY_NAME) или a .переменная npmrc (sass_binary_name)

вы можете увидеть логику для этого в функции getBinaryPath в node-sass\lib\extensions.js

Читайте также: узел Sass не удалось найти привязку для текущей среды