在 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 绑定的主要内容,如果未能解决你的问题,请参考以下文章
让 SASS 使用 NodeJS Express 和 node-sass 自动编译
vue-cli 3中dart-sass替换node-sass