【已解决】npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself.

一、在vue项目中,安装依赖时弹出这些错误:

 二、问题原因,是由于npm自身问题导致的

 三、解决办法

1、删除下载好的node_modules

2、删除package-lock.json文件

3、清除npm缓存 npm cache clean --force

4、去node官网下载最新版本并安装

5、再次npm install

四、引起的其它问题

1、npm run serve运行报错Cannot find module @babel/compat-data/corejs3-shipped-proposals

解决办法:执行npm install @babel/compat-data 后这个错误就可以解决了

2、npm run serve运行报错 Error: error:0308010C:digital envelope routines::unsupported

这是node.js 的版本问题

因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。

解决办法:

1.推荐:修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider

"scripts": {
   "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
   "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},

这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。

2.当次运行的命令窗口有效:在你当前文件的cmd命令窗口输入:SET NODE_OPTIONS=--openssl-legacy-provider, 回车后输入 npm运行命令

这种做法,就是每次运行都要输入SET NODE_OPTIONS=--openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。

3.就是nodejs版本回退到16版本,这样就可以直接运行了。

最后补充一点:

关于:SET NODE_OPTIONS=--openssl-legacy-provider,其实这种方法不能一劳永逸,它的legacy的中文意思翻译过来是经典的,传统的,对于目前2022年12月4号来说,openssl3.0是最新的,之前的版本属于legacy版本,但是随着时间的推移,

未来可能在2024年,openssl3.0可能也变成了legacy版本,此时再设置SET NODE_OPTIONS=--openssl-legacy-provider,来通知nodejs使用传统的openSSL来执行,那么可能就会运行错误。那么对于产品的迭代维护来说,最好的话,还是使用旧版本的nodejs,比如16版本的,这个才可能是解决问题的关键。

最后感谢各位大佬的文章。

原文:(36条消息) nodejs新版本引起的:digital envelope routines::unsupported_yygr的博客-CSDN博客

 npm安装依赖报错: cb never called, cb never called_51CTO博客_npminstall安装包常见错误(36条消息) 运行报错Cannot find module @babel/compat-data/corejs3-shipped-proposals_就算星星碎掉了的博客-CSDN博客

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值