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

101

Я использую 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)

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

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

Джош М.
источник

Ответы:

314

Недавно у меня была такая же проблема с переходом с VS2013.

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

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

Это также относится к другим инструментам, таким как Grunt, Bower и Gulp.

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

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

M1Les
источник
Да, я сделал то же самое, но забыл вернуться сюда и добавить миллионный комментарий. Спасибо!
Джош М.
1
Кто-нибудь поместит это решение в сообщение об ошибке! # улыбается #
Иэн М. Норман
1
В VS2017 это Инструменты> Параметры> Проекты и решения> Управление веб
-
5
В VS2017 вам также нужно поместить $ (PATH) выше $ (VSINSTALLERDIR) \ Web \ External
John Pankowicz
1
В VS2017 мне также пришлось переместить $ (PATH) выше. \ Node_modules \ .bin (в основном, мне пришлось переместить его наверх.)
Дуг,
7

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

  1. создайте новый каталог с именем win32-ia32-11 внутри c: \ Projects \ Test \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \

  2. Goto https://github.com/sass/node-sass-binaries и скачать win32-ia32-11_binding.node.

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

Visual Studio Gulp - средство выполнения задач

Тансу
источник
1
Ах я вижу. Похоже, я установил 64-битную версию всех моих узловых модулей, но она должна работать в 32-битном контексте, так как я использую 32-битную VS. Я думаю. И я не могу найти хороший способ принудительно установить 32-битные пакеты. Немного удивлен, что я не смог найти больше информации по этой теме, похоже, у многих людей была эта проблема.
Джош М.
И я также не смог найти хороший способ заставить NPM установить версию ia32 для всех пакетов. Я попытался создать .npmrcфайл с соответствующим параметром конфигурации, но безуспешно. Даже при работе npm installс 32-битной консолью PS 64-битные версии все еще устанавливаются.
Джош М.
Это безумие. Вместо этого я установил 32-битную версию node, а затем переустановил все свои пакеты, и на этот раз установлена ​​32-битная версия node-sass, но привязка win32-ia32-14вместо win32-ia32-11- что по какой-то причине это то, что libsassищет ...
Джош M.
Кстати, ваше решение работает, но я рассматриваю его как бандаж - я не хочу, чтобы это был шаг, который должны были предпринять другие разработчики, когда они запускают это в первый раз!
Джош М.
1
Ага, это 0.10.31 32bit: nodejs.org/dist/v0.10.31/node-v0.10.31-x86.msi
Джош М.
2

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

Вы должны заставить Visual Studio работать с вашей версией Node.js:

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

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

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

См. Также: Node Sass не может найти привязку для вашей текущей среды

Тевин
источник