如何安装node-sass,为什么会安装失败,全网最专业解答

安装node-sass

大家好,这里是不止前端,专注前端开发过程中的难点问题,并给予最准确的解答。
那么今天的问题是,如何正确安装node-sass
设想一下,你入职了一个新公司,同事发了你一个新的前端项目,你clone下来之后,第一步必然是先npm i安装依赖
然后装到一半,卡了,提示的错误信息一般大概是这个样子
不用仔细看,快速往下滑即可

npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated lodash.isarray@4.0.0: This package is deprecated. Use Array.isArray.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm ERR! code 1
npm ERR! path D:\testproj\node_modules\node-sass
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node scripts/build.js
npm ERR! Building: D:\node\node.exe D:\testproj\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   'D:\\node\\node.exe',
npm ERR! gyp verb cli   'D:\\testproj\\node_modules\\node-gyp\\bin\\node-gyp.js',
npm ERR! gyp verb cli   'rebuild',
npm ERR! gyp verb cli   '--verbose',
npm ERR! gyp verb cli   '--libsass_ext=',
npm ERR! gyp verb cli   '--libsass_cflags=',
npm ERR! gyp verb cli   '--libsass_ldflags=',
npm ERR! gyp verb cli   '--libsass_library='
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@3.8.0
npm ERR! gyp info using node@16.14.0 | win32 | x64
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb check python checking for Python executable "python2" in the PATH
npm ERR! gyp verb `which` failed Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (D:\testproj\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed     at F (D:\testproj\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed     at E (D:\testproj\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21)
npm ERR! gyp verb `which` failed  python2 Error: not found: python2
npm ERR! gyp verb `which` failed     at getNotFoundError (D:\testproj\node_modules\which\which.js:13:12)
npm ERR! gyp verb `which` failed     at F (D:\testproj\node_modules\which\which.js:68:19)
npm ERR! gyp verb `which` failed     at E (D:\testproj\node_modules\which\which.js:80:29)
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\which\which.js:89:16
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\isexe\index.js:42:5
npm ERR! gyp verb `which` failed     at D:\testproj\node_modules\isexe\windows.js:36:5
npm ERR! gyp verb `which` failed     at FSReqCallback.oncomplete (node:fs:198:21) {
npm ERR! gyp verb `which` failed   code: 'ENOENT'
npm ERR! gyp verb `which` failed }

这种时候一般你会把报错信息去搜索,然后会得到可能是如下的处理办法

  1. 执行npm clean,重新npm i
  2. 使用cnpm
  3. 安装python
  4. 网络不行,需要特殊的上网方法

安装失败的原因

以上说法并不全对,实际上是这样,node-sass安装的时候需要下载一个二进制文件,如果无法下载,会尝试在本地编译该文件(非常非常非常麻烦,千万不要尝试)
以上的报错就是编译时的报错,根本不用看,没有任何帮助
那么为什么会下载失败,无非就是两个原因

  1. 网络问题,下载不下来
  2. 你安装的node-sass需要的node版本不对

如何处理安装失败

关于原因1,这个问题大家都懂,当然我还是要发一下的,命令行输入

npm config set registry "http://registry.npm.taobao.org/"
npm config set sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"

不建议挂代理,npm如果需要使用代理需要另行设置,比较麻烦

之后使用npm config list查看是否设置成功
至于问题2,node-sass的github主页已经给出了详细表格

NodeJSSupported node-sass versionNode Module
Node 177.0+102
Node 166.0+93
Node 155.0+, <7.088
Node 144.14+83
Node 134.13+, <5.079
Node 124.12+, <8.072
Node 114.10+, <5.067
Node 104.9+, <6.064
Node 84.5.3+, <5.057
Node <8<5.0<57

所以你首先需要看下你项目的package.json里指定的node-sass是什么版本,然后安装对应版本的node
比如我需要安装的node-sass的版本是是4.15,那么我需要安装的nodejs版本是14

如果需要更详细的判断,你可以在命令行输入

node -p "[process.platform, process.arch, process.versions.modules].join('-')"

复制显示出来的字符串,去releases页面按ctrl+F进行搜索
表格上面就是你电脑能装的node-sass版本,如果找不到,则说明你的node版本太高了,需要降级node版本

总结原因:

  1. 没有设置npm
  2. 当前版本的node-sass对应的node版本不对

感谢大家观看该文章,希望对大家有所帮助

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值