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

在Google Cloud Run用Docker部署React时NODE_ENV未设为production的问题

问题解决:React部署到Cloud Run后NODE_ENV始终为development的问题

问题根源

  1. 构建时机错误:你在执行npm run build之后才设置NODE_ENV=production,但React的process.env.NODE_ENV是在构建阶段就被注入到代码中的,所以build时用的是默认的development环境,导致打包后的代码里NODE_ENV被固定为development。
  2. 启动命令错误:npm run start默认是启动React的开发服务器(仅用于本地开发),生产环境应该用静态文件服务器托管build目录下的编译产物。

修正方案

1. 调整Dockerfile步骤并配置生产环境启动

修改后的Dockerfile:

FROM node:alpine 

WORKDIR /app

COPY . .

# 先设置生产环境变量,确保构建时使用生产模式
ENV NODE_ENV production

# 仅安装生产依赖,减少镜像体积
RUN npm ci --only=production

# 执行生产构建
RUN npm run build

# 安装静态文件服务器serve,用于托管编译后的静态资源
RUN npm install -g serve

EXPOSE 3000

# 用serve启动生产环境服务,托管build目录
CMD ["serve", "-s", "build"]

2. 确认package.json的构建脚本

确保你的package.json里的build脚本是标准的create-react-app命令:

"scripts": {
  "start": "react-scripts start",
  "build": "react-scripts build"
}

3. 关于Cloud Run环境变量的说明

React的环境变量(包括NODE_ENV)是在构建时就打包进静态文件的,部署后通过Cloud Run控制台设置的环境变量不会生效。如果需要动态配置后端地址这类运行时参数,建议通过其他方式实现(比如在index.html中注入全局变量,或者单独维护配置文件)。

验证

重新构建镜像并部署到Cloud Run后,网站会显示Please Log in production,同时后端地址会自动切换到生产环境的URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:30:28