教你一招解决node-sass安装各种坑

 更新时间:2023年12月06日 10:12:36   作者:TPEngineer  
这篇文章主要给大家介绍了关于如何通过一招解决node-sass安装各种坑的相关资料,Node-sass是一个库,它将Node.js绑定到LibSass(流行样式表预处理器Sass的C版本),需要的朋友可以参考下

解决方法

node-sass 是 ruby 时代遗留下来的“宝贝”,依赖各种远古编译环境,如 Python2.7、G++等,而现在我们再去装会碰到各种报错。

实际上,我们用 sass 替代 node-sass 即可。dart-sass 兼容 node-sass 的 API,而且安装过程无需下载二进制文件,这样大家就不需要安装 node-sass 了。

package.json
{
    "sass": "^1.68.0",
}

编译不会报错,但是会有一些过时写法的警告。

Deprecation Warning: $weight: Passing a number without unit % (0) is deprecated.

To preserve current behavior: $weight * 1%

More info: https://sass-lang.com/d/function-units

   ╷
42 │     color: mix($--tag-success-color, $--color-white, $fontColorWeight);

node-sass 安装过程分析

首先了解一下 node-sass 安装的过程:

  • npm 拉下 node-sass包;

  • 根据node版本和node-sass版本拉取对应的binding.node编译器,原因是sass的编译语言比较特殊,需要下载对应版本的编译器才能编译;(node scripts/install.js 阶段)

  • 如果能拉下binding.node就【安装成功】;

    如果找不到对应的binding.node包,即失败,然后就会尝试本地编译。

失败原因分析

一、网络不稳定

首先要知道的是,安装 node-sass 时在 node scripts/install.js 这个阶段会从 github.com 上下载一个 .node 文件,大部分安装不成功的原因都源自这里,因为 GitHub Releases 里的文件都托管在 s3.amazonaws.com 上面,而这个网址在国内总是"网络不稳定",所以我们需要通过第三方服务器下载这个文件。

二、本地编译没有Python环境

三、node-sass版本与当前Node版本不匹配

因node版本与node-sass版本不匹配导致 binding.node 拉不下来,无法编译。

node-sass 版本的兼容性不好,老项目中依赖的 node-sass 很可能已经不兼容新的 node 版本,对应版本兼容参考如下官方仓库

NodeJSSupported node-sass versionNode Module
Node 155.0+88
Node 144.14+83
Node 134.13+, <5.079
Node 124.12+72
Node 114.10+, <5.067
Node 104.9+64
Node 84.5.3+, <5.057
Node <8<5.0<57

比如我在 Node 8 的环境下安装 node-sass@3.13.1, 安装的时候就会出现找不到对应的 binding.node 而报错,如下:

$ npm install --save-dev node-sass
> node-sass@3.13.1 install D:\WorkSpace\mumble-next-ng\node_modules\gulp-sass\node_modules\node-sass
> node scripts/install.js

Downloading binary from http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node
Cannot download "http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node":

HTTP error 404 OK

四、没有清理缓存

每次装包失败报错后记得都要 npm uninstall xxx 清除装包错误留下的缓存。

比如 npm i -D node-sass 报错了,就要执行一遍 npm uninstall node-sass,然后再重新安装。

总结

到此这篇关于解决node-sass安装各种坑的文章就介绍到这了,更多相关node-sass安装坑解决内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node app 打包工具pkg的具体使用

    node app 打包工具pkg的具体使用

    这篇文章主要介绍了node app 打包工具pkg的具体使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • node实现登录图片验证码的示例代码

    node实现登录图片验证码的示例代码

    这篇文章主要介绍了node实现登录图片验证码的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解如何使用nvm管理Node.js多版本

    详解如何使用nvm管理Node.js多版本

    这篇文章主要介绍了详解如何使用nvm管理Node.js多版本,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • node.js对应npm安装和使用方法教程

    node.js对应npm安装和使用方法教程

    这篇文章主要给大家介绍了关于node.js对应npm安装和使用方法的相关资料,文中通过代码介绍的非常详细,对大家学习或者使用node.js具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • Node绑定全局TraceID的实现方法

    Node绑定全局TraceID的实现方法

    这篇文章主要介绍了Node 绑定全局 TraceID的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 如何使用Node.js判断png图片是否存在透明像素

    如何使用Node.js判断png图片是否存在透明像素

    这篇文章主要给大家介绍了关于如何使用Node.js判断png图片是否存在透明像素的相关资料,文中将实现的原理以及代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Node.js开发之访问Redis数据库教程

    Node.js开发之访问Redis数据库教程

    这篇文章主要介绍了Node.js开发之访问Redis数据库教程,本文讲解了安装Redis的Node.js驱动、编写测试程序以及npm远程服务器连接十分缓慢的解决方法,需要的朋友可以参考下
    2015-01-01
  • node.js中fs.stat与fs.fstat的区别详解

    node.js中fs.stat与fs.fstat的区别详解

    fs.stat和fs.fstat他们都是用来获取文件的状态信息,下面这篇文章主要给大家介绍了关于node.js中fs.stat与fs.fstat区别的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • node.js中的events.emitter.removeAllListeners方法使用说明

    node.js中的events.emitter.removeAllListeners方法使用说明

    这篇文章主要介绍了node.js中的events.emitter.removeAllListeners方法使用说明,本文介绍了events.emitter.removeAllListeners 的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置

    为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置

    这篇文章主要介绍了为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论