旧Next.js项目启动dev报错:error:0308010C:digital envelope routines::unsupported
解决Next.js旧项目启动时的
ERR_OSSL_EVP_UNSUPPORTED错误 这个错误是因为你当前用的Node.js v19启用了新的OpenSSL加密算法,而项目依赖的Next.js 11.x版本配套的Webpack版本不支持该算法,导致哈希生成失败。以下是三种可行的解决办法:
方法一:临时启用旧加密算法(最快解决)
修改package.json中的启动脚本,添加环境变量指定使用旧的OpenSSL提供程序:
{ "scripts": { "develop": "NODE_OPTIONS=\"--openssl-legacy-provider\" next dev", "dev": "NODE_OPTIONS=\"--openssl-legacy-provider\" next dev", "build": "NODE_OPTIONS=\"--openssl-legacy-provider\" next build", "start": "NODE_OPTIONS=\"--openssl-legacy-provider\" next start", "deploy": "NODE_OPTIONS=\"--openssl-legacy-provider\" next build && next export", "lint": "next lint", "lint:fix": "next lint --fix" } }
修改后重新执行npm run dev即可启动项目。
方法二:降级Node.js到兼容版本
Next.js 11.x官方推荐的Node.js版本为12.22.0+、14.16.0+、16.0.0+,你可以用nvm(Node版本管理器)降级:
- 安装指定版本:
nvm install 16 - 切换到该版本:
nvm use 16
之后直接执行npm run dev就能正常启动。
方法三:升级Next.js到新版本
升级Next.js到12.x及以上版本,这些版本的Webpack已经适配了高版本Node.js的加密算法:
- 执行升级命令:
npm install next@latest react@latest react-dom@latest
- 检查项目依赖是否兼容,比如
react-markdown等旧版依赖可能需要同步升级,避免出现其他兼容性问题。 - 测试启动项目:
npm run dev
内容的提问来源于stack exchange,提问作者Rom-888
相关产品推荐
相关产品推荐

