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

本地正常运行的Angular应用Docker构建时npm run build --prod报错

解决Angular 8 Docker构建时的ERR_OSSL_EVP_UNSUPPORTED错误

方案1:指定兼容的Node.js版本镜像

Angular 8官方适配的Node.js版本为10.x、12.x或14.x,17及以上版本因默认启用OpenSSL 3.0会与旧版构建工具产生兼容冲突。修改Dockerfile的基础镜像为兼容版本:

# 替换高版本Node镜像为兼容版本
FROM node:14-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build --prod

方案2:临时启用OpenSSL兼容模式

若不愿更换Node版本,可在构建命令前添加环境变量,强制使用旧版OpenSSL行为:

# 修改构建命令,添加兼容参数
RUN NODE_OPTIONS="--openssl-legacy-provider" npm run build --prod

方案3:校验依赖版本匹配性

检查package.json中核心依赖版本是否与Angular 8匹配:

  • @angular/cli需为8.x版本
  • webpack需为4.x版本
    若存在第三方依赖后升级的情况,回退至与Angular 8兼容的版本。

完整Dockerfile示例(兼容版)

FROM node:14-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN NODE_OPTIONS="--openssl-legacy-provider" npm run build --prod

# 可选:部署到nginx阶段
FROM nginx:alpine
COPY --from=build /app/dist/your-app-name /usr/share/nginx/html
EXPOSE 80

错误根源说明

本地运行正常是因为本地Node.js版本低于17,未启用OpenSSL 3.0;而Docker镜像使用高版本Node时,Angular 8依赖的旧版构建工具(如webpack 4、uglify-js)使用的加密算法被OpenSSL 3.0标记为不安全,从而触发ERR_OSSL_EVP_UNSUPPORTED错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:45:44