离线安装node-sass

388 阅读2分钟

被老项目坑的一天

非我所愿,实不能也,公司突然给我安排了一个极少维护的老项目,虽然需求简单,但是也得跑起来看看

git显示这个项目的初始化时间是5年前,vue2,webpack3

不管怎么说,先执行npm install吧,果不其然,一堆报错

开始各种处理,node版本降级,webpack-dev-server降级,全局安装未在package.json中的插件如cross-env等

终于,项目启动到编译代码步骤,报node-sass的安装错误

尝试解决node-sass的安装问题

网上查看了各种解决方案,并了解到node-sass的安装过程

  1. 校验本地node_modules中是否已安装node-sass,版本是否一致;
  2. 如未安装或版本不符,从npm源安装node-sass本体;
  3. 检测全局缓存和本地中是否有binding.node,如有即跳过安装;
  4. 没有binding.node则从github下载该二进制文件并将其缓存到全局;
  5. 假如binding.node下载失败,则尝试本地编译出该文件;
  6. 将版本信息写到package-lock.json;

以上步骤参考自文章(为什么node-sass总是安装失败?)

所以,在处理过程中遇到过以下报错,类如找不到sass-loader版本不符合,找不到binding.node,下载binding.node失败等等

最终采用离线安装node-sass的方式成功解决问题

离线安装node-sass

查看需要的node-sass版本号

虽然npm install执行失败,但是在窗口中会有如下信息 cannot download "https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-72_binding.node

ba25e4b68351b6b8921b05885e10ea97.png

即使没有,也可以在该网站下载需要版本的node-sass,跳转之后如果是这样的网址(https://gh.api.99988866.xyz/https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-72_binding.node)也没关系,截取地址栏中如下地址https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-72_binding.node

下载binding.node安装包

将下载地址如https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-72_binding.node复制到浏览器地址栏,回车后浏览器会自动下载,得到类似win32-x64-72_binding.node文件名的文件

在需要安装node-sass的项目内执行以下安装命令

npm install node-sass --sass-binary-path="[folder]\win32-x64-72_binding.node" 其中[folder]是你刚刚下载的文件所在的目录,比如我的就是"C:\workspace\workProject\win32-x64-72_binding.node"

node_nodules 文件夹下node_sass处理

执行结束以后,会告诉你安装成功,但是此时仍然会运行失败

打开项目的node_nodules 文件夹,找到node_sass文件夹,打开vendor文件夹,新建win32-x64-72文件夹,然后将刚才下下来的win32-x64-72_binding.node文件放到这个文件夹下,并重命名为binding.node

成功

再次运行项目,项目成功运行起来,鼓掌👏