Провідник завдань Runner не може завантажити завдання


101

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

Відповіді:


314

Нещодавно у мене була така ж проблема з міграцією з VS2013.

Як зазначив Джош в своєму коментарі тут Visual Studio 2015 судів з більш старою версією вузла. Якщо ви не хочете зациклюватися на будь-якій версії 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


Так, я закінчила те саме, але забула повернутися сюди і додати мільйон і один коментар. Дякую!
Джош М.

1
Хтось отримує це рішення у повідомленні про помилку! # усмішки #
Iain M Norman

1
У VS2017 це Інструменти> Параметри> Проекти та рішення> Управління веб-пакетами> Зовнішні веб-інструменти
Джеймс Елліс-Джонс

5
У VS2017 вам також потрібно поставити $ (PATH) вище $ (VSINSTALLERDIR) \ Web \ External
Джон Панкович

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. Перейдіть на сторінку 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 \ та перейменуйте його уinding.node

Visual Studio Gulp - Runner Task


1
А, бачу. Здається, я встановив 64-бітну версію всіх моїх вузлових модулів, але він повинен працювати в 32-бітному контексті, оскільки я перебуваю в VS, який є 32-розрядним. Я вважаю. І я не можу знайти хороший спосіб примусити встановити 32-бітні пакети. Приємно здивований, що я не зміг знайти більше інформації на цю тему, здається, у багатьох людей, ймовірно, виникне ця проблема.
Джош М.

І я також не зміг знайти хороший спосіб змусити NPM встановити версію ia32 усіх пакетів. Я спробував створити .npmrcфайл із відповідним параметром config, але не пощастило. Навіть працюючи npm installв 32-розрядної консолі PS, 64-бітні версії все ще встановлюються.
Джош М.

Це божевілля. Я встановив 32-бітну версію вузла замість цього, а потім перевстановив усі мої пакети, і на цей раз встановлена ​​32-бітна версія node-sass, але прив’язка win32-ia32-14замість цього win32-ia32-11- яка чомусь є те, що libsassшукають ...
Джош М.

До речі, ваше рішення працює, але я вважаю, що це бандайд - я не хочу, щоб це був крок, який повинні зробити інші розробники, коли вони вперше запускають це!
Джош М.


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 змінних або встановлених аргументів процесу, то двійкові дані визначаються за допомогою поточної платформи процесів, архітектури та версії NI ABI. Отже, якщо ви запустили встановлення вузла в одній програмі, а потім спробуєте запустити node-sass в додатку з іншою платформою / архітектурою / ABI, двійковий файл не буде завантажений. Рішення полягає в ручному завантаженні двійкової або виправлення бінарної версії за допомогою змінної середовища (SASS_BINARY_NAME) або змінної .npmrc (sass_binary_name)

Ви можете бачити логіку цього в функції getBinaryPath в node-sass \ lib \ extensions.js

Дивіться також: Node Sass не знайшов прив'язки для вашого поточного середовища

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.