0


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依赖了一个二进制文件

binding.node

,从npm源安装完本体后还会从github下载

binding.node

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

原因一: npm源速度慢

由于众所周知的国内网络环境,从国内安装官方源的依赖包会很慢。可以将npm源设置成国内镜像源(如淘宝npm):

npm config set registry https://registry.npm.taobao.org

或者通过

.npmrc

文件设置:

// .npmrc
registry=https://registry.npm.taobao.org/

原因二: binding.node源无法访问或速度慢

node-sass除了npm部分的代码,还会下载二进制文件

binding.node

,默认源是github,国内访问较慢,特殊时期甚至无法访问。我们也可以将其改成国内源:

// linux、mac 下
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass

// window 下
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass

或者通过

.npmrc

文件设置:

// .npmrc
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/

有类似问题的还有

chromedriver

,

phantomjs

,

electron

等常见依赖包,我们可以一并写到

.npmrc

中:

// .npmrc
sass_binary_site=https://npm.taobao.org/mirrors/node-sass
chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs
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

中查到:

PS D:\demo> node
> console.log(process.versions);
{ http_parser: '2.8.0',
  node: '10.15.3',
  v8: '6.8.275.32-node.51',
  uv: '1.23.2',
  zlib: '1.2.11',
  ares: '1.15.0',
  modules: '64',
  nghttp2: '1.34.0',
  napi: '3',
  openssl: '1.1.0j',
  icu: '62.1',
  unicode: '11.0',
  cldr: '33.1',
  tz: '2018e' }
undefined
>

如上显示,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的版本即可。

标签: npm vue.js 前端

本文转载自: https://blog.csdn.net/yanzhi_2016/article/details/127706880
版权归原作者 yanzhi_2016 所有, 如有侵权,请联系我们删除。

“node-sass安装失败的解决方法”的评论:

还没有评论