Node.js项目执行npm run start报ERR_OSSL_EVP_UNSUPPORTED错误求助
解决Node.js执行
npm run start时的ERR_OSSL_EVP_UNSUPPORTED错误 错误原因
这个错误源于Node.js v17及以上版本默认启用OpenSSL 3.0安全标准,而项目依赖的构建工具(如Webpack、Vue CLI等)使用了OpenSSL 3.0不再支持的MD4哈希算法,引发加密初始化失败。即便切换到Node.js 14.17仍出现问题,多是因为项目依赖缓存未清理、全局依赖冲突,或是启动脚本存在强制配置冲突。
解决办法
1. 临时绕过加密限制(快速生效)
在启动命令前添加环境变量,允许使用旧哈希算法:
- Linux/macOS:
NODE_OPTIONS=--openssl-legacy-provider npm run start - Windows 命令提示符:
set NODE_OPTIONS=--openssl-legacy-provider && npm run start - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm run start
2. 清理依赖缓存并重装依赖
切换Node.js版本后,旧依赖缓存可能导致版本冲突,执行以下命令:
# 删除依赖目录和锁文件(根据包管理器选择对应的锁文件) rm -rf node_modules package-lock.json yarn.lock # 强制清理npm缓存 npm cache clean --force # 重新安装依赖 npm install
3. 修改构建配置(长期解决方案)
找到项目的构建配置文件(如webpack.config.js、vue.config.js),将MD4哈希替换为兼容算法(如SHA256):
- Webpack项目:修改
webpack.config.js的output配置module.exports = { output: { hashFunction: 'sha256' } }; - Vue CLI项目:修改
vue.config.jsconst { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ configureWebpack: { output: { hashFunction: 'sha256' } } })
4. 排查全局依赖冲突
检查全局安装的包(如Webpack、npm)是否与项目本地依赖版本兼容,使用npm list -g查看全局依赖列表,必要时卸载冲突的全局包,改用项目本地依赖(通过npx执行命令)。
内容的提问来源于stack exchange,提问作者AmrShams07
相关产品推荐
相关产品推荐

