прив'язки libsass не знайдено при використанні node-sass у nodejs


77

Я хочу використовувати node-sassмодуль у своєму node.js v0.12додатку, щоб отримати вигоду від продуктивності libsass.
Я виконував npm i node-sassустановку модуля, поки що помилок немає.

Тепер починається безлад:
якщо я просто відкриваю REPLтермінал, щоб спробувати, node-sassтоді все працює нормально, але якщо я включу його у свої файли проекту та запустим, node myfile.jsя отримаю таке повідомлення про помилку:

Error: `libsass` bindings not found. Try reinstalling `node-sass`?

В описі модуля на npmjs.com зазначено, що може виникнути проблема з вирішенням проблем #!/usr/bin/env nodeв Ubuntu та способом виправлення цього, але це не так на моїй машині.
Я не міг знайти нічого корисного, тому сподіваюся, що ви могли б мені допомогти.

Я використовую node v0.12.2 під Ubuntu 14.10.

PS: Я вже намагався перевстановити node-sass, але безуспішно. Нічого не змінюється.


Якщо відповідь Філіпа вирішила ваші проблеми, прийміть. Це виправило мою проблему.
Jazzy

Я зіткнувся з цим у своєму Ionic-проекті, після оновлення до останнього випуску NodeJS - out put вказує запустити a npm rebuild node-sass, який позбувся помилки для мене / мого середовища.
Коді,

Відповіді:


119

Ви, мабуть, намагалися перевстановити node-sass під час використання

npm install node-sass

або

npm uninstall node-sass
npm install node-sass

Але node-sass - це C-версія Sass. Ви повинні використовувати npm rebuild :

npm rebuild node-sass

8
Коли я намагаюся виконати команду rebuild, я отримую помилку "Помилка: Не вдається знайти виконану версію Python" python "... Не впевнений, що це версія C Sass
Ед,

1
@Sebastian Native Abstractions for Node (nan) "різко змінюється від одного випуску до наступного" і часто потребує перекомпіляції для кожного випуску. node-sassповністю стосується прив'язки nodeдо lib-sassпрограми C. посилання: аддони вузлів , відомий коментар , libsass
Матвій

271

Якщо ви використовуєте node 4.x або пізнішої версії, вам потрібно перевстановити gulp-sass за допомогою:

npm uninstall --save-dev gulp-sass
npm install --save-dev gulp-sass@2

2
Дякую! Я завжди забуваю, як вирішити цю проблему, і, безумовно, це було найпростішим і найшвидшим рішенням.
natdico

3
Це вирішило мою проблему! Було результатом суттєвого оновлення вузла.
ClickerMonkey

4
Це нарешті зробило це для мене, на відміну від майже будь-якої іншої відповіді на це питання. +1
Жоао

2
Дякую Дякую Дякую! Ця невеличка проблема одного разу вбила демо-версію, і я боявся оновити і повернувся до версії 0.12.7, сьогодні я спробував ще раз, якщо проблема сталася, і це вирішило!
Джанкарло Гомес

2
це виправило це і для мене ... після тижнів спроб інших рішень і відсутності набору тестів для мого проекту. Дякую
Обі

20

Я вирішив цю проблему, видаливши існуючу /node_modulesпапку та запустившиnpm update


1
спробував це насправді, але в цьому випадку / node_modules знаходився під контролем SVN ... видалення каталогу вивело дерево SVN з синхронізації. В іншому випадку це хороший варіант!
JsusSalv

Це трапляється зі мною також час від часу, і видалення node_modulesта повторний запуск npm installпрацює і для мене.
Geo242

8
З цієї причини контроль джерел - погане місце для зберігання залежностей! Це вимагає повного замикання всіх ваших середовищ. package.jsonпризначений для опису ваших залежностей, і ви повинні використовувати щось інше, щоб встановити свої залежності на ваші коробки. (маючи скрипт, який викликає установку npm, або контейнер
докера

Може, він хотів повний крок усіх своїх середовищ? - Передбачувані та відтворювані збірки! = Погана ідея.
BrainSlugs83,

2
Саме для цього призначений пакет.json. Ви не хочете зберігати всі модулі node_module в сенсі керування джерелом.
AFD

8

Це єдине рішення, яке працювало для мене,

sudo npm install -g n
sudo n 0.12.7
npm install node-sass@2
sudo npm -g install node-gyp@3
npm rebuild node-sass

7

Це обхідне рішення ( http://forum.ionicframework.com/t/error-running-gulp-sass/32311/20 ) спрацювало у мене.

Починаючи з цього налаштування:

Cordova CLI: 5.3.3 Gulp версія: CLI версія 3.9.0 Gulp локальна: Локальна версія 3.9.0 Ionic Версія: 1.1.0 Ionic CLI Версія: 1.6.5 Ionic App Lib Версія: 0.3.9 ios-розгортання версія: Не встановлено версія ios-sim: 5.0.1 ОС: Mac OS X Версія Yosemite Node: v4.1.1 Версія Xcode: Xcode 6.4 Версія збірки 6E35b

Я знайшов рішення уникнути використання команди 'sudo'. Перш ніж виправляти дозволи для npm, потрібно: https://docs.npmjs.com/getting-started/fixing-npm-permissions та виправити дозволи для Node тут: http://mawaha.com/permission-fix-node- js / Після цього ми можемо перевірити та перевстановити програмне забезпечення без `` sudo '' на npm, n або ionic.

Я виконав цей крок:

npm install -g n
rm -R node_modules/ 
npm install node-sass@3.3.3 
npm -g install node-gyp@3
npm uninstall gulp-sass
npm install gulp-sass@2 
npm rebuild node-sass 
ionic setup sass 

Чому node-sass@3.3.3? Оскільки він працює з останньою іонною версією: https://github.com/driftyco/ionic/pull/4449


Дякую тобі так дуже багато. Нарешті це виправили через 2 години <3
Сібін Грасіч

4

Поєднання двох наведених вище відповідей мені вдалося, а також доповнення:

sudo npm uninstall --save gulp-sass
npm install --save gulp-sass@2
npm update
npm rebuild node-sass

3

Я вирішив це, щоб створити правильний каталог із зазначеним файлом binding.node. Ви можете завантажити прив'язки з github

https://github.com/sass/node-sass-binaries

Знайдіть у повідомленні про помилку шлях, де він намагається знайти прив’язку. У моєму випадку:

C: \ Users \ Martijn \ Documents \ node_modules \ gulp-sass \ node_modules \ node-sass \ vendor \ win32-x64-46

Тому я створюю цю карту win32-x64-46 і копіюю прив'язку з github в.


2

Моє рішення було знизити до v0.10.25(спробуйте, sudo n 0.10.25якщо ви використовуєте n)


1

Для мене ця проблема виникла в моїй системі збірки (Travis CI), зробивши щось мовчазне у моєму .travis.ymlфайлі. По суті, я дзвонив npm install раніше nvm use 0.12 , і це спричиняло node-sassстворення 0.10замість 0.12. Моє рішення було просто переміщення nvm useз розділу .travis.ymlфайлу before_scriptдо npm installкоманди, яка була в цьому before_installрозділі.


1

Для мене це була проблема версії Node, спробуйте використати nvm, щоб повернути свою версію приблизно так: 0.10.32. Це спрацювало для мене. Я працював 4.2.2



0

Немає необхідності в sudo або перевстановленнях. Це завжди працювало для мене:

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