yarn下载node-sass失败

问题描述:

在vue项目中需要使用旧版本的node-sass@4.14.1,使用yarn install node-sass@4.14.1,一直失败,提示node_modules\node-sass: Command failed。


原因:

现在前端安装依赖大家常用的工具是npm和yarn,而这两者都有各自的缓存机制,有时候,第一次安装node-sass失败后,可能这个包就已经被缓存了,导致我们后续再进行安装时,就不再会从远程服务器或者是代理去拉取了。这就导致了一个死循环,永远拉不到正确的文件。
因为node-sass在安装过程中,需要用到一个二进制文件:binding.node,但是这个二进制文件在国外的网站,在国内获取不到,这就导致了绝大部分的安装失败。通过设置各种代理之后,仍然不能获取到正确的binding.node文件,具体原因可能多种多样,但其实我们不需要关心这些问题,我们知道了问题的成因,那么直接从根源上解决问题即可


解决方法:

分析清除了成因之后,解决问题就相对容易多了。既然node-sass总是从缓存拉取,那么我们就在缓存那里,直接把正确的文件放在那里,这样在安装node-sass时,直接从缓存中拉倒了正确的binding.node文件,问题便得以解决。

所以我们要做以下几件事情:
1、检测当前环境中,node-sass要使用的binding.node对应的版本
2、获取到对应版本的binding.node
3、将获取到的binding.node放到缓存中

操作步骤:

1、查看当前环境适用的binding.node
node -p “[process.platform, process.arch, process.versions.modules].join(’-’)”
2、到github下载对应版本的文件。链接地址:github文件下载地址
3、将下载好的文件放入缓存目录中
yarn缓存目录查询:yarn cache dir

注意
node-sass最终安装正确的情况下,目录结构是这样的:
在这里插入图片描述
所以为了保证正确安装,我们需要按照这个格式把下载到的文件放到缓存的目录下。
这里,win32-x64-57在不同的环境下可能有不同的版本,要注意看一下你本地对应的是什么版本。
查看版本上面给出了一个命令,可以试一下。
查看版本还有一种方式,就是当你第一次安装失败时,你去node-modules中去找node-sass目录,然后找到vender目录,进去就能看到你的环境下,building.node对应的版本了。

我本地的目录结构如下,供参考:
在这里插入图片描述
在这里插入图片描述
4、设置国内镜像(可选择)。
运行:yarn config set registry https://registry.npm.taobao.org -g
查询是否设置成功:yarn config get registry
5、重新安装node-sass.
安装默认的:yarn add node-sass
安装指定版本的:yarn add node-sass@4.14.0

npm也是一样的道理,只不过把命令yarn换成npm

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值