运行npm run serve启动Vue项目报error:0308010C错误如何解决
报错原因
核心错误标识:
错误码:ERR_OSSL_EVP_UNSUPPORTED
错误描述:Error: error:0308010C:digital envelope routines::unsupported
运行环境:Node.js v17.2.0
该错误是Node.js版本与项目依赖的webpack版本的OpenSSL兼容性问题导致:
Node.js 17及更高版本默认集成了OpenSSL 3.0,该版本移除了对旧版不安全哈希算法的默认支持。而你当前的Vue项目使用的是旧版vue-cli,底层依赖webpack 4,webpack 4的文件哈希计算逻辑调用了已被OpenSSL 3.0废弃的算法,因此启动开发服务时触发报错。
解决方案
方案1:启用OpenSSL旧版提供程序(最快生效,无需修改依赖版本)
通过配置环境变量让OpenSSL启用旧版算法支持,不需要调整任何依赖版本:
- 临时生效(仅当前终端窗口有效):
- Windows cmd终端:先执行
set NODE_OPTIONS=--openssl-legacy-provider,再运行npm run serve - Windows PowerShell终端:先执行
$env:NODE_OPTIONS="--openssl-legacy-provider",再运行npm run serve - Mac/Linux终端:先执行
export NODE_OPTIONS=--openssl-legacy-provider,再运行npm run serve
- Windows cmd终端:先执行
- 永久生效(项目内配置,每次启动自动生效):
直接修改项目package.json中的serve脚本:
仅Windows环境使用:
需要跨Windows/Mac/Linux环境使用的话,先安装跨平台环境变量工具:{ "scripts": { "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build" } }npm install cross-env --save-dev
再修改脚本:{ "scripts": { "serve": "cross-env NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve", "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build" } }
方案2:降级Node.js到16.x LTS版本(长期稳定,无需修改项目配置)
Node.js 16.x是官方长期支持版本,默认使用OpenSSL 1.1.1,完全兼容旧版webpack的计算逻辑。卸载当前Node.js v17.2.0,安装16.x系列LTS版本,重新执行npm install安装依赖后即可正常启动项目。
方案3:升级项目webpack到5.x版本(彻底修复兼容问题)
webpack 5已经适配了OpenSSL 3.0的算法要求,你可以将项目的@vue/cli升级到支持webpack 5的版本,或者手动升级webpack相关依赖到5.x系列,升级完成后即可正常启动项目。
内容的提问来源于stack exchange,提问作者Alvis Bao
相关产品推荐
相关产品推荐

