You need to enable JavaScript to run this app. Create React App在Docker构建时提示找不到./option-assertions模块如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Create React App在Docker构建时提示找不到./option-assertions模块如何解决

问题根因
  • 你的Dockerfile中将COPY package.json .和RUN npm install两个依赖安装步骤注释,直接复制全量项目文件到容器内,会把本地Windows环境生成的node_modules也带入镜像。Windows和Linux系统的npm二进制依赖不兼容,直接导致依赖文件缺失、无法正常加载。
  • 即便取消注释,没有配置.dockerignore排除本地node_modules的情况下,后续的COPY . .操作也会覆盖容器内安装的依赖,触发版本冲突。
  • 部分alpine版node镜像缺少C++编译依赖,部分npm包安装时需要编译,也会导致依赖安装不完整。
解决方案
  1. 首先在项目根目录新增.dockerignore文件,写入以下内容,排除无关文件避免被复制到容器内:
node_modules
npm-debug.log
build
.git
.gitignore
.env
  1. 修改Dockerfile配置,调整构建步骤,优先使用和本地完全一致的node版本保证兼容性,修改后参考:
# 和本地node版本完全匹配,避免版本差异问题
FROM node:14.15.0
WORKDIR /client

# 优先复制package相关文件,可利用docker缓存加快后续构建速度
COPY package.json package-lock.json* ./
# 用npm ci替代npm install,保证依赖版本和本地锁定的版本完全一致
RUN npm ci

# 再复制剩余的项目代码
COPY . .

# 执行构建
RUN npm run build

CMD ["npm", "start"]
  1. 如果要继续使用alpine镜像,需要提前安装编译所需的系统依赖,修改后参考:
FROM node:14.15.0-alpine
WORKDIR /client
# 安装alpine下npm包编译需要的依赖
RUN apk add --no-cache python3 make g++
COPY package.json package-lock.json* ./
RUN npm ci
COPY . .
RUN npm run build
CMD ["npm", "start"]
验证操作

执行docker system prune -f清理旧的构建缓存后,重新执行镜像构建命令即可正常构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 00:06:07