如何修复NextJS的ERR_OSSL_EVP_UNSUPPORTED及NodeJS项目构建报错
问题1:PostCSS 导出路径错误(ERR_PACKAGE_PATH_NOT_EXPORTED)
这个错误是因为项目里的某个依赖调用了PostCSS未公开导出的./lib/parser路径,高版本PostCSS(8.x+)严格限制了导出的子路径,导致无法访问。解决方法如下:
- 降级PostCSS到兼容版本:执行命令
npm install postcss@7.x --save-dev(yarn用户用yarn add postcss@7.x --dev),7.x版本没有严格的导出路径限制。 - 排查并更新依赖:用
npm ls postcss查看依赖树,找到哪个包在调用这个未导出的路径,将该包升级到适配PostCSS 8+的版本,或者联系包作者修复。 - 临时修改PostCSS配置(不推荐长期使用):找到
node_modules/postcss/package.json中的exports字段,手动添加"./lib/parser": "./lib/parser.js",但重新安装依赖后这个修改会失效,仅作临时测试使用。
问题2:Next.js 中的 ERR_OSSL_EVP_UNSUPPORTED 错误
这个错误多发生在Node.js 17+版本,因为默认启用了新的OpenSSL提供器,和部分旧依赖不兼容。解决方法:
- 临时添加环境变量启动:Windows终端执行
set NODE_OPTIONS=--openssl-legacy-provider && npm run dev(构建时把dev换成build);Mac/Linux终端执行NODE_OPTIONS=--openssl-legacy-provider npm run dev。 - 配置package.json脚本:直接修改项目的package.json,把scripts里的
dev和build命令改成带环境变量的版本。比如:
Windows用户需要调整为:"scripts": { "dev": "NODE_OPTIONS=--openssl-legacy-provider next dev", "build": "NODE_OPTIONS=--openssl-legacy-provider next build", "start": "next start" }"scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && next dev", "build": "set NODE_OPTIONS=--openssl-legacy-provider && next build", "start": "next start" } - 升级Node.js版本:升级到最新的稳定版Node.js(比如18.x或更高),新版本已经修复了部分OpenSSL兼容性问题,可能直接解决该错误。
内容的提问来源于stack exchange,提问作者RobH
相关产品推荐
相关产品推荐

