总结安装node-sass遇到的问题
由于安装node-sass经常出现问题,所以决定找一下原因。
node-sass安装出现问题,通常跟一个名为binding.node的二进制文件有关,httpclient在安装过程中,需要用到这个二进制文件。
因此安装node-sass相关的失败原因有以下几种:
- binding.linux常用命令node文件下载不下来
- node.js版本与biHTTPnd女配每天都在抱大腿我要成仙ing.node版本不兼容
binding.node文件下载不下来
因为需要从国外站点下载,网络可能不通。
主要有以下三种解决办法:
- 科学上网(翻墙)
- 通过SASS_BINARY_SIT缓存是什么意思E环境变量指定bin难破mg5日剧ding.node文件的http 500下载地址
- 手动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
...
可以发现,每个缓存对应一个文件夹,对于一个具体包的具体版本,一个包的多个版本存储为不同的文件夹,如下所示:
单个缓存文件的结构如下所示:
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.js稳定版本为17,但是node-sass并不支持。
然github汤姆后是linux系统安装确定具体下载哪个b缓存视频合并inding.node文件,binding.node文件下载列表如下所示:
查看当前环境适用的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-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的版本越高,值就越高。