总结安装node-sass遇到的问题

由于安装node-sass经常出现问题,所以决定找一下原因。

node-sass安装出现问题,通常跟一个名为binding.node的二进制文件有关,httpclient在安装过程中,需要用到这个二进制文件。

因此安装node-sass相关的失败原因有以下几种:

  1. binding.linux常用命令node文件下载不下来
  2. node.js版本与biHTTPnd女配每天都在抱大腿我要成仙ing.node版本不兼容

binding.node文件下载不下来

因为需要从国外站点下载,网络可能不通。

主要有以下三种解决办法:

  1. 科学上网(翻墙)
  2. 通过SASS_BINARY_SIT缓存是什么意思E环境变量指定bin难破mg5日剧ding.node文件的http 500下载地址
  3. 手动github是什么下载,将其放在缓存文件中

翻墙我们就Linux不讲了,我们主要讲讲通过设置SASS_BINARY_SITE环境变量和使用缓存这两种方法。

设置SASS_BINARY_SITE环境变量

SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ yarn add node-sass

使用缓存

node-sass总是先从缓存拉取,那女配没有求生欲藤萝为枝么我们就在缓存那里,直接把正确的文件放在那里,这样在安装node-sass时,直接从缓存中拉倒了正确的binding.node文件,问题便得以解决。

我一般使用yarn来安装,我们先来聊聊yarn的缓存,npm是类似的。

yarn的缓存

查看存放yarn缓存的文件路径:

$ yarn cache dir
/home/user/.cache/yarn/v6

查看一下缓存文件长什么样子:

$ ls /home/user/.cache/yarn/v6
npm-select-hose-2.0.0-625d8658f865af43ec962bfc376a37359a4994ca-integrity
npm-selfsigned-1.10.11-24929cd906fe0f44b6d01fb23999a739537acbe9
npm-selfsigned-1.10.7-da5819fd049d5574f28e88a9bcc6dbc6e6f3906b-integrity
npm-semver-5.3.0-9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f-integrity
npm-semver-5.5.0-dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab-integrity
...

可以发现,每个缓存对应一个文件夹,对于一个具体包的具体版本,一个包的多个版本存储为不同的文件夹,如下所示:

总结安装node-sass遇到的问题

单个缓存文件的结构如下所示:

npm-node-sass-5.0.0-4e8..
└── node_modules
    └── node-sass
        ├── CHANGELOG.md
        ├── LICENSE
        ├── README.md
        ├── bin
        ...
下载binding.node

下载地址: github.com/sass/node-s…

找到对应node-sass版本,https和http的区别我们以v5.0.0为例。

我们先确定版本确定的支持环境,比如支持哪些操作github下载系统、什么系统架构、node.js的版本,如下图所示:

总结安装node-sass遇到的问题

主要注意的是虽然目前为止,node.js稳定版本为17,但是node-sass并不支持。

github汤姆后是linux系统安装确定具体下载哪个b缓存视频合并inding.node文件,binding.node文件下载列表如下所示:

总结安装node-sass遇到的问题

查看当前环境适用的binding.node:

$ node -p "[process.platform, process.arch, process.versions.modules].join('-')"
linux-x64-83

说明:

  • processlinux虚拟机.platform: 操作系统平台
  • process.arch: 操作系统 CPU 架构
  • process.versions.modules: 表示当前的 ABI 版本,每当 C++ API 更改时都会增加,node.js的版本越高,值就越高,比如nodejs v17为102。

根据输出,所以我缓存视频在手机哪里找们需要下载 linux-x64-83_bindingithub开放私库glinux系统.node。

将binding.node放在缓存文件中

我安HTTP装的版本是node-sass@5.0.0,所以先找到缓存文件npm-node-sass-5.0.0-4e8.女配没有求生欲txt.。

所以为了保证正确安装,我们需要按照这个格式把下载到的文件放到缓存的目录下。

.
└── node-sass
    ├── CHANGELOG.md
    ├── bin
    ...
    └── vendor
        └── linux-x64-83
            └── binding.node

找到vender目录,新建linux-x64-83文件夹,放入缓存视频变成本地视频binding.node文件。

这样安装node-saHTTPss@5.0.0,就不会去下载binding.node了http代理

node.js版本与binding.node版本不兼容

简单来说,就是有些版本的node-sass只支持特定版本的node.js,比如node-sass@6.0.1只支持node版本12-16,如下图所示:

总结安装node-sass遇到的问题

如果你必须使用node-salinux创建文件ss@6.github官网0.1,比如你使用的第三方库使用的是这个版本,那么你只有升或降node.js版本了。

比如我之前nLinuxode.js版本为17,为了使用node-sass,我只有降低node.js版本,到目前为止,node-sass都不支持node.linux系统安装js 17。

不支持的原因还是没有对应的binding.ngithub下载ode文件。

使用node.js 17运行女配满眼都是钱如下命令:

node -p "[process.platform, process.arch, process.versions.modules].join('-')"
linux-x64-102

是找不到对应linux-x64-102的binding.ngithub中文官网网页ode文件的。

process.versions.modules表示当前的 ABI 版本,每当 C++ API 更改时都会增加,node.js的版本越高,值就越高。

发表评论

提供最优质的资源集合

立即查看 了解详情