Node.js v19.5.0下Next.js项目遇OpenSSL初始化错误,求非降级方案
解决Next.js + Node.js v19.5.0的ERR_OSSL_EVP_UNSUPPORTED错误
临时解决(单次生效)
- macOS/Linux:在终端执行命令前追加环境变量:
NODE_OPTIONS=--openssl-legacy-provider npm run dev # 构建时执行 NODE_OPTIONS=--openssl-legacy-provider npm run build - Windows CMD:先设置环境变量再运行脚本:
set NODE_OPTIONS=--openssl-legacy-provider npm run dev - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider" npm run dev
永久解决(修改package.json)
直接在package.json的scripts字段中嵌入环境变量,后续运行npm命令时自动生效:
macOS/Linux适配版:
"scripts": { "dev": "NODE_OPTIONS=--openssl-legacy-provider next dev", "build": "NODE_OPTIONS=--openssl-legacy-provider next build", "start": "NODE_OPTIONS=--openssl-legacy-provider next start" }
Windows CMD适配版:
"scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && next dev", "build": "set NODE_OPTIONS=--openssl-legacy-provider && next build", "start": "set NODE_OPTIONS=--openssl-legacy-provider && next start" }
更优方案:升级Next.js
如果你的Next.js版本偏旧,直接升级到最新稳定版即可——官方已适配Node.js 17+的OpenSSL 3.0特性,升级后无需额外配置就能解决问题:
npm install next@latest react@latest react-dom@latest
错误原因
Node.js 17及以上版本默认启用OpenSSL 3.0,禁用了部分旧版加密算法。旧版Next.js或其依赖库仍在调用这些被禁用的算法,从而触发ERR_OSSL_EVP_UNSUPPORTED初始化错误。添加--openssl-legacy-provider参数会启用OpenSSL的旧加密提供者以兼容依赖;升级Next.js则是从根源上适配新的加密标准。
内容的提问来源于stack exchange,提问作者kartik Krishna sharma
相关产品推荐
相关产品推荐

