为什么执行npm run serve时会抛出ERR_OSSL_EVP_UNSUPPORTED错误?
问题原因
该错误是Node.js 17及以上版本内置的OpenSSL 3.0默认禁用了旧版加密算法,而Vue CLI 4.5.14依赖的Webpack 4版本仍在调用已废弃的加密算法接口,因此启动时触发兼容性报错。
解决方案
- 方案1:修改项目启动命令(临时适配,仅对当前项目生效)
打开项目根目录的package.json文件,修改scripts字段中的启动和打包命令:
Windows系统(Powershell/cmd环境):
"scripts": { "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build" }
Mac/Linux系统:
"scripts": { "serve": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve", "build": "NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build" }
修改完成后重新执行npm run serve即可正常启动。
方案2:配置全局环境变量(全局适配,对所有同类型报错项目生效)
在系统环境变量中新增变量名为NODE_OPTIONS,值为--openssl-legacy-provider的变量,配置完成后重启终端生效。方案3:降级Node.js版本(彻底根除兼容性问题)
Vue CLI 4.5.14的官方适配Node.js版本范围为12.x~16.x,卸载当前高版本Node.js,安装16.x LTS版本即可完全避免该类兼容性报错。
内容的提问来源于stack exchange,提问作者James Chew
相关产品推荐
相关产品推荐

