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 в другом месте. Вот временное решение.
создать новую папку с именем 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.узел.
копировать в Win32-системах ia32-11_binding.файл узла c:\Projects\Test\node_modules\gulp-sass\node_modules\node-sass\vendor\win32-ia32-11\ и переименуйте его в binding.узел
Я пробовал все выше решения, но это не работает, и я нашел другое решение здесь.
вы должны заставить Visual Studio работать с вашим узлом.Яш версия:
- на
Tools
>Options
в Visual Studio 2015 - на
Projects and Solutions
>External Web Tools
- добавить следующий путь:
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 не удалось найти привязку для текущей среды