Проводник Runner не может загружать задачи

Я использую VS2015 и Gulp. Я открываю проводник запуска задач и нажимаю обновление, и это отображается в журнале:

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, но не напрямую в командной строке.

Ответ 1

У меня была та же проблема, что и в VS2013.

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

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

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

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

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

Ответ 2

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

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

  • Откройте 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

Visual Studio Gulp - Task Runner

Ответ 3

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

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

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

Ответ 5

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

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

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