使用npx create-next-app创建Next.js项目启动时报ERR_OSSL_EVP_UNSUPPORTED错误
问题根因
该错误由Node.js版本与Next.js版本的OpenSSL依赖不兼容导致:你使用的Node.js v17+默认采用OpenSSL 3.0,而当前安装的Next.js 11.1.2内置的webpack版本依赖旧版OpenSSL的哈希算法,两者不匹配触发报错。
解决方案
按生效速度和长期适用性排序如下:
方案1:修改项目启动命令(最快生效,无需调整环境/依赖版本)
只需在dev、build命令前添加OpenSSL旧版兼容的环境变量即可,不同系统写法有差异:
- Windows系统(cmd/powershell环境)修改package.json的scripts字段:
{ "scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && next dev", "build": "set NODE_OPTIONS=--openssl-legacy-provider && next build", "start": "next start", "lint": "next lint" } }
- Mac/Linux系统修改package.json的scripts字段:
{ "scripts": { "dev": "NODE_OPTIONS=--openssl-legacy-provider next dev", "build": "NODE_OPTIONS=--openssl-legacy-provider next build", "start": "next start", "lint": "next lint" } }
- 如需跨系统通用,先执行
npm i cross-env -D安装跨平台环境变量工具,再修改scripts字段:
{ "scripts": { "dev": "cross-env NODE_OPTIONS=--openssl-legacy-provider next dev", "build": "cross-env NODE_OPTIONS=--openssl-legacy-provider next build", "start": "next start", "lint": "next lint" } }
方案2:升级Next.js版本(长期推荐)
Next.js 12及以上版本已经完成了Node.js 17+的兼容适配,直接执行以下命令升级依赖即可解决问题:npm install next@latest react@latest react-dom@latest
方案3:降级Node.js版本
将本地Node.js版本降级到16.x LTS版本,该版本默认使用旧版OpenSSL,不会触发该兼容问题。
内容的提问来源于stack exchange,提问作者Yuza
相关产品推荐
相关产品推荐

