it-swarm.com.ru

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

Я использую 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-simple в PowerShell, в том же каталоге, и он работает нормально - он возвращает список задач.

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

97
Josh M.

У меня недавно была такая же проблема при переходе с 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

308
M1Les

Кажется, gulp-sass ищет 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.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 - Task Runner

7
tansu

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

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

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

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

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

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

0
Tevin

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

0
Mohsen Sarkar