蛋仔派对官服下载安装(node-sass安装失败的解决方法)
安装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):
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 ,对应版本兼容如下(或参考官方仓库):
NodeJS Minimum node-sass version Node Module Node 13 4.13+ 79 Node 12 4.12+ 72 Node 11 4.10+ 67 Node 10 4.9+ 64 Node 8 4.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的版本即可 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!