You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js 18环境下React Docker镜像运行出现ERR_OSSL_EVP_UNSUPPORTED错误求助

错误原因与解决方法

错误原因

这个ERR_OSSL_EVP_UNSUPPORTED报错确实和Node版本直接相关:Node.js 17及以上版本默认启用OpenSSL 3.0,该版本废弃了部分旧哈希算法;而你的React项目依赖的webpack(或react-scripts)版本较老,仍在调用这些已被废弃的算法,导致加密哈希创建失败,触发该错误。

解决方法

方法1:添加环境变量兼容旧算法

修改Dockerfile,通过设置NODE_OPTIONS让Node使用旧加密提供器,有两种实现方式:

  • 方式一:直接在启动命令中注入环境变量
FROM node:18-alpine
EXPOSE 3000
WORKDIR /app
COPY ./frontend/package.json .
RUN npm install
COPY ./frontend .
COPY ./images .
CMD ["sh", "-c", "NODE_OPTIONS='--openssl-legacy-provider' npm start"]
  • 方式二:提前设置全局环境变量
FROM node:18-alpine
EXPOSE 3000
WORKDIR /app
ENV NODE_OPTIONS="--openssl-legacy-provider"
COPY ./frontend/package.json .
RUN npm install
COPY ./frontend .
COPY ./images .
CMD ["npm", "start"]

方法2:降级Node版本到16.x

将Dockerfile的基础镜像换成Node 16的alpine版本(Node 16使用OpenSSL 1.1.1,不存在该兼容性问题):

FROM node:16-alpine
EXPOSE 3000
WORKDIR /app
COPY ./frontend/package.json .
RUN npm install
COPY ./frontend .
COPY ./images .
CMD ["npm", "start"]

方法3:升级项目依赖版本

如果你的项目基于create-react-app创建,升级react-scripts到v5及以上版本(该版本已兼容Node 17+的OpenSSL 3.0):
在项目的package.json所在目录执行:

npm install react-scripts@latest

执行完成后重新构建Docker镜像即可。

内容的提问来源于stack exchange,提问作者Yusuf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:54:21