整理解决node-sass依赖错误的问题

整理解决node-sass依赖错误的问题

参照: link
最近因为某些原因,MAC系统重装了,然后运行老项目时,出现了各种水土不服的问题,花了不少时间解决,特此记录。
解决方案:查看自己的node版本是否过高,node-sass@4.x.x系列的依赖在过高版本的node下不能顺利运行的。我是通过n控制node版本,降低node@v10.24.1得以解决。

因为习惯使用CNPM淘宝源来进行依赖安装,即cnpm i,发现老项目老是报错:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.8.3 postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.8.3 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

网上搜索后,很多人说是通过淘宝源解决,但我尝试后问题依旧,不过我已经锁定是node-sass的版本问题。
故尝试了cnpm i,翻墙 npm i,或者设置

npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sassCOPY

以上都没有效果。
也自己尝试删除package.json中的

"node-sass": "^4.8.3",
"sass-loader": "^7.0.1",
"style-loader": "^0.21.0",COPY

然后重新cnpm i node-sass sass-loader style-loader -D,依赖倒是都可以安装上了,但运行npm run dev时,会报错:
Module build failed: TypeError: this.getOptions is not a function
或者
TypeError [ERR_INVALID_ARG_TYPE]: The “path” argument must be of type string。COPY
然后解决方案搜索后,说是node-sass版本太高了,因为这时自动加载的node-sass已经到了6.0.1还是多少。
后来想到,可能是node的版本问题,所以查了下NODE版本,
node-v16.10.0COPY
确实太高了,已经接近最新版本,估计node-sass@4.8.3依赖和node版本之间的问题了。
随即,安装n来控制node多版本,安装node 10系列的版本

root@zhujindeMacBook-Pro ~ # n list
node/16.10.0
root@zhujindeMacBook-Pro ~ # n 10
  installing : node-v10.24.1
       mkdir : /usr/local/n/versions/node/10.24.1
       fetch : https://nodejs.org/dist/v10.24.1/node-v10.24.1-darwin-x64.tar.xz
   installed : v10.24.1 (with npm 6.14.12)
root@zhujindeMacBook-Pro ~ # n
   installed : v10.24.1 (with npm 6.14.12)
root@zhujindeMacBook-Pro ~ # node -v
v10.24.1COPY

之后回到项目,删除node_modules,重新运行cnpm i,问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无殇的无奈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值