libsass-Bindungen wurden bei Verwendung von node-sass in nodejs nicht gefunden

77

Ich möchte das node-sassModul in meiner node.js v0.12Anwendung verwenden, um von der Leistung von zu profitieren libsass.
Ich habe ausgeführt npm i node-sass, um das Modul zu installieren, bisher keine Fehler.

Jetzt beginnt das Chaos:
Wenn ich das nur REPLin einem Terminal öffne, um es auszuprobieren, node-sassfunktioniert alles einwandfrei. Wenn ich es jedoch in meine Projektdateien aufnehme und ausführe node myfile.js, wird die folgende Fehlermeldung angezeigt:

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

Die Beschreibung des Moduls auf npmjs.com besagt, dass möglicherweise ein Problem bei der Lösung #!/usr/bin/env nodeunter Ubuntu vorliegt und wie dies behoben werden kann. Dies ist jedoch auf meinem Computer nicht der Fall.
Ich konnte nichts Nützliches finden und hoffe, dass Sie mir helfen können.

Ich verwende den Knoten v0.12.2 unter Ubuntu 14.10.

PS: Ich habe bereits versucht, Node-Sass neu zu installieren, aber ohne Erfolg. Nichts verändert sich.

TorbenJ
quelle
Wenn Philipps Antwort Ihre Probleme gelöst hat, akzeptieren Sie bitte. Es hat mein Problem behoben.
Jazzy
Ich bin in meinem Ionic-Projekt darauf gestoßen, nachdem ich auf die spätere NodeJS-Version aktualisiert hatte - die Ausgabe weist an, a auszuführen npm rebuild node-sass, wodurch der Fehler für mich / meine Umgebung beseitigt wurde .
Cody

Antworten:

119

Sie haben wahrscheinlich versucht, Node-Sass während der Verwendung neu zu installieren

npm install node-sass

oder

npm uninstall node-sass
npm install node-sass

Node-Sass ist jedoch eine C-Version von Sass. Sie müssen npm Rebuild verwenden :

npm rebuild node-sass
Philipp Andreychev
quelle
8
Wenn ich den Wiederherstellungsbefehl versuche, erhalte ich den Fehler 'Fehler: Die ausführbare Python-Datei "Python" kann nicht gefunden werden ... Ich bin mir nicht sicher, ob es sich bei meiner um eine C-Version von Sass
Edd vom
1
@Sebastian Native Abstractions für Node (nan) "ändern sich dramatisch von einer Version zur nächsten" und müssen häufig für jede Version neu kompiliert werden. node-sassgeht es ausschließlich um die Bindung nodean lib-sassein C-Programm. Links: Node Addons , ein gefeierter Kommentar , libsass
Matthew
271

Wenn Sie Node 4.x oder höher verwenden, müssen Sie gulp-sass neu installieren mit:

npm uninstall --save-dev gulp-sass
npm install --save-dev gulp-sass@2
Wilson Silva
quelle
2
Vielen Dank! Ich vergesse immer, wie ich dieses Problem lösen kann, und dies war bei weitem die einfachste und schnellste Lösung.
Natdico
3
Dies hat mein Problem behoben! War ein Ergebnis der Aktualisierung des Knotens erheblich.
ClickerMonkey
4
Dies hat es schließlich für mich getan, im Gegensatz zu so ziemlich jeder anderen Antwort auf diese Frage. +1
João
2
Danke danke danke! Dieses kleine Problem hat einmal eine Demo beendet und ich hatte Angst, ein Upgrade durchzuführen und auf 0.12.7 zurückzukehren. Heute habe ich es erneut versucht, war das Problem aufgetreten und dies hat es behoben!
Giancarlo Gomez
2
Dies hat es auch für mich behoben ... nachdem ich wochenlang andere Lösungen ausprobiert hatte und keine Testsuite für mein Projekt hatte. Danke
Obi
20

Ich habe dieses Problem behoben, indem ich den vorhandenen /node_modulesOrdner gelöscht und ausgeführt habenpm update

Dallas Clark
quelle
1
habe dies tatsächlich versucht, aber in diesem Fall war das / node_modules unter SVN-Kontrolle ... Durch das Löschen des Verzeichnisses wurde der SVN-Baum nicht mehr synchronisiert. Ansonsten ist es eine gute Option!
JsusSalv
Dies passiert mir auch von Zeit zu Zeit, und das Löschen node_modulesund erneute Ausführen npm installfunktioniert auch für mich.
Geo242
8
Die Quellcodeverwaltung ist aus diesem Grund ein schlechter Ort zum Speichern von Abhängigkeiten! Es erfordert einen vollständigen Lockstep aller Ihrer Umgebungen. package.jsonwurde entwickelt, um Ihre Abhängigkeiten zu beschreiben, und Sie sollten etwas anderes verwenden, um Ihre Abhängigkeiten auf Ihren Boxen zu installieren. (mit einem Skript, das npm install aufruft, oder einem Docker-Container oder oder oder)
AnilRedshift
Vielleicht wollte er einen vollständigen Überblick über alle seine Umgebungen? - Vorhersehbare und reproduzierbare Builds! = Schlechte Idee.
BrainSlugs83
2
Dafür ist package.json da. Sie möchten nicht alle unsinnigen node_modules in der Quellcodeverwaltung speichern.
AFD
8

Dies ist die einzige Lösung, die für mich funktioniert hat.

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
Fremder
quelle
7

Diese Problemumgehung ( http://forum.ionicframework.com/t/error-running-gulp-sass/32311/20 ) hat bei mir funktioniert.

Beginnend mit diesem Setup:

Cordova CLI: 5.3.3 Gulp-Version: CLI-Version 3.9.0 Gulp lokal: Lokale Version 3.9.0 Ionic-Version: 1.1.0 Ionic-CLI-Version: 1.6.5 Ionic App Lib-Version: 0.3.9 ios-deploy-Version: Nicht installiert ios-sim-Version: 5.0.1 Betriebssystem: Mac OS X Yosemite-Knotenversion: v4.1.1 Xcode-Version: Xcode 6.4 Build-Version 6E35b

Ich habe eine Lösung gefunden, um die Verwendung des Befehls 'sudo' zu vermeiden. Wir müssen vorher die npm-Berechtigungen wie folgt korrigieren: https://docs.npmjs.com/getting-started/fixing-npm-permissions und die Fixierungsberechtigungen für Node hier: http://mawaha.com/permission-fix-node- js / Danach können wir Software ohne 'sudo' für npm, n oder ionic überprüfen und neu installieren.

Ich folgte diesem Schritt:

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 

Warum [email protected]? Weil es mit der neuesten ionischen Version funktioniert: https://github.com/driftyco/ionic/pull/4449

Francesco
quelle
Vielen, vielen Dank. Endlich behoben nach 2 Stunden <3
Sibin Grasic
4

Das Kombinieren der beiden obigen Antworten hat für mich funktioniert, plus Ergänzungen:

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

Ich habe dieses Problem gelöst, um das richtige Verzeichnis mit der angegebenen Datei binding.node zu erstellen. Sie können die Bindungen von github herunterladen

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

Suchen Sie in der Fehlermeldung nach dem Pfad, in dem versucht wird, die Bindung zu finden. In meinem Fall:

C: \ Benutzer \ Martijn \ Dokumente \ Knotenmodule \ gulp-sass \ Knotenmodule \ Knoten-sass \ Anbieter \ win32-x64-46

Also erstelle ich diese Map win32-x64-46 und kopiere die Bindung von github in.

MartijnBrands
quelle
2

Meine Lösung war ein Downgrade auf v0.10.25(versuchen sudo n 0.10.25Sie es, wenn Sie verwenden n)

Nathanhleung
quelle
1

Für mich wurde dieses Problem in meinem Build-System (Travis CI) dadurch verursacht, dass ich in meiner .travis.ymlDatei etwas Dummes getan habe . Tatsächlich rief ich npm install vor nvm use 0.12 , und dies verursacht wurde node-sassfür gebaut werden 0.10statt 0.12. Meine Lösung bestand darin, einfach nvm useaus dem Abschnitt der .travis.ymlDatei before_scriptvor dem npm installBefehl zu wechseln, der sich im before_installAbschnitt befand.

Alan H.
quelle
1

Dies war ein Problem mit der Knotenversion für mich. Versuchen Sie, Ihre Version mit nvm auf etwa 0.10.32 zurückzuverfolgen. Das hat bei mir funktioniert. Ich habe 4.2.2 ausgeführt

Kevin Alwell
quelle
0

Keine Notwendigkeit für Sudo oder Neuinstallationen. Das hat bei mir immer funktioniert:

nvm use 0.12.2
alexfigtree
quelle