在nodejs中使用node-sass时找不到libsass绑定


77

我想node-sassnode.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下解决该问题可能存在问题,以及如何解决此问题,但我的机器上不是这种情况。
我找不到任何有用的信息,因此希望您能对我有所帮助。

我正在Ubuntu 14.10下使用节点v0.12.2。

PS:我已经尝试重新安装node-sass,但是没有成功。没有什么改变。


如果Philipp的回答解决了您的问题,请接受。它解决了我的问题。
2015年

在更新到最新的NodeJS版本之后,我在Ionic项目中遇到了这个问题-输出指令运行一个npm rebuild node-sass,这为我/我的环境消除了错误。
科迪

Answers:


119

您可能尝试在使用时重新安装node-sass

npm install node-sass

要么

npm uninstall node-sass
npm install node-sass

但是node-sass是Sass的C版本。您必须使用npm rebuild

npm rebuild node-sass

8
当我尝试重建命令时,出现错误“错误:找不到Python可执行文件“ python” ...不确定我的C语言是Sass
Edd

1
@Sebastian Node的本机抽象(nan)“从一个发行版到下一个发行版发生了巨大变化”,并且通常需要为每个发行版重新编译。node-sass与绑定nodelib-sassC程序完全有关。链接:node addons著名评论libsass
Matthew

271

如果您使用的是节点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,今天我再次尝试了一下,以防问题发生并解决了!
Giancarlo Gomez

2
经过数周尝试其他解决方案并且在我的项目上没有测试套件之后,这也为我解决了这一问题。谢谢
Obi

20

我通过删除现有/node_modules文件夹并运行来解决此问题npm update


1
实际上尝试过此操作,但在这种情况下,/ node_modules受SVN控制。。。删除目录会使SVN树不同步。否则,这是一个不错的选择!
JsusSalv

我也时不时地发生这种情况,删除node_modules和重新运行npm install对我来说也是如此。
Geo242

8
出于这个原因,源代码控制是存储依赖项的一个不好的地方!它需要您所有环境的完整锁定步骤。package.json是用来描述您的依赖关系的,您应该使用其他方式在盒子上安装依赖关系。(具有调用npm install或
docker

也许他想要所有环境的完整步调?-可预测和可复制的构建!=不好的主意。
BrainSlugs83 2015年

2
那就是package.json的用途。您不想将所有的node_modules废话都存储在源代码管理中。
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本地版本:Local版本3.9.0 Ionic版本:1.1.0 Ionic CLI版本:1.6.5 Ionic App Lib版本:0.3.9 ios-deploy版本:未安装ios-sim版本:5.0.1操作系统:Mac OS X Yosemite节点版本: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
Sibin Grasic '16

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.yml文件中有些笨拙而在我的构建系统(Travis CI)中引起的。实际上,我npm install 之前 在打电话nvm use 0.12,这是node-sass0.10而不是所建立的0.12。我的解决方案只是将文件部分nvm use移出该部分之前的命令。.travis.ymlbefore_scriptnpm installbefore_install


1

对我来说,这是一个Node版本问题,请尝试使用nvm将您的版本回溯到类似以下内容:0.10.32。这对我有用。我正在运行4.2.2



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.