[web教学] node-sass安装失败的办理方法

[复制链接]
查看528 | 回复0 | 2023-8-23 11:54:52 | 显示全部楼层 |阅读模式 来自 中国北京
安装node-sass有以下几个步调:

  • 校验当地node_modules中是否已安装node-sass,版本是否一致;
  • 如未安装或版本不符,从npm源安装node-sass本体;
  • 检测全局缓存和当地中是否有binding.node,如有即跳过安装;
  • 没有binding.node则从github下载该二进制文件并将其缓存到全局;
  • 假如binding.node下载失败,则实验当地编译出该文件;
  • 将版本信息写到package-lock.json;
由此看到,实际上node-sass依赖了一个二进制文件binding.node,从npm源安装完本体后还会从github下载binding.node。
因此安装node-sass相关的失败缘故原由有以下几种:
缘故原由一: npm源速率慢

由于众所周知的国内网络环境,从国内安装官方源的依赖包会很慢。可以将npm源设置成国内镜像源(如淘宝npm):
  1. npm config set registry https://registry.npm.taobao.org
复制代码
大概通过.npmrc文件设置:
  1. // .npmrc
  2. registry=https://registry.npm.taobao.org/
复制代码
缘故原由二: binding.node源无法访问或速率慢

node-sass除了npm部门的代码,还会下载二进制文件binding.node,默认源是github,国内访问较慢,特殊时期乃至无法访问。我们也可以将其改成国内源:
  1. // linux、mac 下
  2. SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
  3. // window 下
  4. set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass
复制代码
大概通过.npmrc文件设置:
  1. // .npmrc
  2. sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
复制代码
有类似标题的另有chromedriver,phantomjs,electron等常见依赖包,我们可以一并写到.npmrc中:
  1. // .npmrc
  2. sass_binary_site=https://npm.taobao.org/mirrors/node-sass
  3. chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
  4. phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs
  5. electron_mirror=https://npm.taobao.org/mirrors/electron
复制代码
缘故原由三: node版本与node-sass版本不兼容

node-sass版本兼容性并欠好,老项目中依赖的node-sass很大概已经不兼容新的node,对应版本兼容如下(或参考官方堆栈):
NodeJSMinimum node-sass versionNode ModuleNode 134.13+79Node 124.12+72Node 114.10+67Node 104.9+64Node 84.5.3+57 本文开头的安装例子中,binding.node的版本是v4.13.0/win32-x64-64_binding.node,可以看到,内里包括node-sass版本号v4.13.0,平台win32,架构x64,以及Node Module的版本64。Node Module是node的一个模块,其版本号可以在进程process.versions中查到:
  1. PS D:\demo> node
  2. > console.log(process.versions);
  3. { http_parser: '2.8.0',
  4.   node: '10.15.3',
  5.   v8: '6.8.275.32-node.51',
  6.   uv: '1.23.2',
  7.   zlib: '1.2.11',
  8.   ares: '1.15.0',
  9.   modules: '64',
  10.   nghttp2: '1.34.0',
  11.   napi: '3',
  12.   openssl: '1.1.0j',
  13.   icu: '62.1',
  14.   unicode: '11.0',
  15.   cldr: '33.1',
  16.   tz: '2018e' }
  17. undefined
  18. >
复制代码
如上表现,node10.15.3对应的module版本为64。 假如node-sass与node的版本不兼容,就会找不到对应的binding.node而报错,比方你的node是10.15.3,装node-sass4.6.1,则会实验安装v4.6.1/win32-x64-64_binding.node,但这个版本的binding.node是不存在的。 此时改node-sass或node的版本即可。

来源:https://blog.csdn.net/yanzhi_2016/article/details/127706880
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则