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

Posted

技术标签:

【中文标题】在 nodejs 中使用 node-sass 时找不到 libsass 绑定【英文标题】:libsass bindings not found when using node-sass in nodejs 【发布时间】:2015-06-10 07:02:26 【问题描述】:

我想在我的node.js v0.12 应用程序中使用node-sass 模块以从libsass 的性能中受益。 我执行npm i node-sass 安装模块,目前没有错误。

现在混乱开始了: 如果我只是在终端中打开REPL 以尝试node-sass,那么一切正常,但如果我将其包含在我的项目文件中并运行node myfile.js,则会收到以下错误消息:

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

npmjs.com 处的模块描述指出在 Ubuntu 下解析 #!/usr/bin/env node 可能存在问题以及如何解决此问题,但在我的机器上并非如此。 我找不到任何有用的东西,所以我希望你能帮助我。

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

P.S.:我已经尝试重新安装 node-sass 但没有成功。没有任何变化。

【问题讨论】:

如果 Philipp 的回答解决了您的问题,请接受。它解决了我的问题。 在我更新到最新的 NodeJS 版本后,我在 Ionic 项目中遇到了这个问题——输出指示运行 npm rebuild node-sass,这为我/我的环境消除了错误。 【参考方案1】:

如果您使用的是 node 4.x 或更高版本,那么您需要重新安装 gulp-sass:

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

【讨论】:

谢谢!我总是忘记如何解决这个问题,到目前为止,这是最简单快捷的解决方案。 这解决了我的问题!是显着更新节点的结果。 这终于为我做到了,与这个问题的几乎所有其他回复不同。 +1 谢谢谢谢谢谢!这个小问题杀死了一次演示,我害怕升级并恢复到0.12.7,今天我再次尝试,出现问题并修复它! 这也为我解决了这个问题......经过数周尝试其他解决方案并且我的项目没有测试套件。谢谢【参考方案2】:

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

npm install node-sass

npm uninstall node-sass
npm install node-sass

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

npm rebuild node-sass

【讨论】:

当我尝试重建命令时,我收到错误“错误:找不到 Python 可执行文件“python”...不确定我的是 Sass 的 C 版本 @Sebastian Native Abstractions for Node (nan) “从一个版本到下一个版本发生了巨大变化”,并且通常需要为每个版本重新编译。 node-sass 完全是关于将 node 绑定到 C 程序 lib-sass。链接:node addons、a celebrated comment、libsass【参考方案3】:

我通过删除现有的/node_modules 文件夹并运行npm update 解决了这个问题

【讨论】:

实际尝试过,但在这种情况下,/node_modules 受 SVN 控制...删除目录会使 SVN 树不同步。否则这是一个不错的选择! 这也时常发生在我身上,删除 node_modules 并重新运行 npm install 也适用于我。 源代码控制是存储依赖项的一个不好的地方,因为这个原因!它需要您所有环境的完全同步。 package.json 旨在描述您的依赖项,您应该使用其他东西在您的盒子上安装您的依赖项。 (有一个调用 npm install 的脚本,或者一个 docker 容器,or or or) 也许他想要一个完全同步的所有环境? -- 可预测和可重现的构建!= 坏主意。 这就是 package.json 的用途。您不想在源代码管理中存储所有无意义的 node_modules。【参考方案4】:

这是唯一对我有用的解决方案,

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

【讨论】:

【参考方案5】:

这个解决方法 (http://forum.ionicframework.com/t/error-running-gulp-sass/32311/20) 对我有用。

从这个设置开始:

科尔多瓦 CLI:5.3.3 Gulp 版本:CLI 版本 3.9.0 Gulp local:本地版本 3.9.0 离子版本:1.1.0 离子 CLI 版本:1.6.5 离子应用程序库版本:0.3.9 ios-deploy 版本:未安装 ios-sim 版本:5.0.1 操作系统:Mac OS X 优胜美地 节点版本:v4.1.1 Xcode 版本:Xcode 6.4 Build 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小时后终于修好了 【参考方案6】:

结合上面的两个答案对我有用,加上补充:

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

【讨论】:

【参考方案7】:

我已经解决了这个问题,用指定的 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 中复制绑定。

【讨论】:

【参考方案8】:

我的解决方案是降级到v0.10.25(如果您使用n,请尝试sudo n 0.10.25

【讨论】:

【参考方案9】:

对我来说,这个问题是由于在我的 .travis.yml 文件中做了一些愚蠢的事情而在我的构建系统 (Travis CI) 中引起的。实际上,我调用了npm install 之前 nvm use 0.12,这导致为0.10 而不是0.12 构建node-sass。我的解决方案只是将nvm use.travis.yml 文件的before_script 部分移到npm install 命令之前,该命令位于before_install 部分中。

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

我通过updating my gcc from 4.4.x to 4.7.x解决了这个问题

【讨论】:

【参考方案12】:

无需 sudo 或重新安装。这一直对我有用:

nvm use 0.12.2

【讨论】:

【参考方案13】:

这是我为解决问题而采取的步骤。

    我手动将我的节点更新到最新版本

    重新安装 node-sass

npm install node-sass

3.npm 审计修复以修复某些漏洞。

`npm audit fix`

5.npm install node-sass

 `npm install node-sass`

此后正常工作和编译。 如果与我的回答有关的任何内容不正确,我深表歉意。我只是一个初学者。 希望对你有用

【讨论】:

以上是关于在 nodejs 中使用 node-sass 时找不到 libsass 绑定的主要内容,如果未能解决你的问题,请参考以下文章

更新 NodeJS 后使用 node-sass 的问题

让 SASS 使用 NodeJS Express 和 node-sass 自动编译

NodeJS OSX错误构建node-sass

vue-cli 3中dart-sass替换node-sass

vue-cli 3中dart-sass替换node-sass

vue-cli 3中dart-sass替换node-sass