最近把nodejs 的版本更新了,原来用的 16.15.1 现在用的 18.16.1,结果所有的vue工程都启不动了,一直报错。
1.报错截图
2.原因分析
error:03000086:digital envelope routines::initialization error ,这个是nodejs版本的问题,18版本以前的没有这个问题,因为新的nodejs版本对OpenSSL 数字信封不支持所以报错。OpenSSL 是非常常用的开源工具,帮助我们确保数据的安全性和保密性。很无语的原因,不管你是否用了nodejs新版本中都会报错。
3.解决办法:修改项目中的 package.json
原代码:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build"
}
修改后的代码:
"scripts": {
"serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
}
4.再次执行npm run build,成功了。
5.结论
版本升级有风险,升级 Node.js 版本时,需要谨慎操作,并确保与 Vue 工程的兼容性、依赖项、代码、测试和备份等方面都得到妥善的处理。