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

部署Next.js至Google Cloud Run时环境变量显示为undefined

Next.js部署至Google Cloud Run时环境变量显示undefined的解决办法

1. 确认Cloud Run服务已正确配置环境变量

本地的.env.development/.env.production文件不会自动同步到Cloud Run,必须手动在服务配置中添加:

  • 打开Google Cloud控制台,进入Cloud Run服务页面
  • 选择你的目标服务,点击「编辑与部署新版本」
  • 切换到「容器、变量和秘密」标签,在「环境变量」区域添加所有需要的变量(对应.env.production中的键值对)
  • 部署新版本后,服务运行时就能读取这些变量

2. 检查Next.js环境变量的前缀规则

  • 客户端组件/页面:只能访问带NEXT_PUBLIC_前缀的环境变量,如果你的客户端代码使用了无前缀的变量,部署后会显示undefined,需要给变量添加前缀,同时在Cloud Run中配置对应带前缀的变量
  • 服务端组件/API路由:可以访问所有无前缀的环境变量,但前提是Cloud Run已经配置了这些变量

3. 构建镜像时的环境变量注入(若使用Docker部署)

如果通过Docker镜像部署,需确保构建或运行时注入变量:

  • 在Dockerfile中添加环境变量声明:
    ENV NEXT_PUBLIC_MY_VAR=your-production-value
    ENV MY_SERVER_VAR=your-server-value
    
  • 或者在构建镜像时通过--build-arg传递:
    docker build --build-arg NEXT_PUBLIC_MY_VAR=your-value .
    
  • 若使用Cloud Build,需在cloudbuild.yaml中配置构建参数或环境变量,确保构建过程能获取到所需变量

4. 排除缓存干扰

有时候Cloud Run的旧版本缓存会导致变量未更新,尝试:

  • 重新部署服务,确保选择「替换现有版本」
  • 部署时可以添加一个无关的环境变量(比如FORCE_REDEPLOY=1)触发全新部署

5. 避免依赖镜像内的.env文件

Cloud Run运行时不会自动读取镜像中的.env.production文件,即使你把它打包进镜像也没用。不要依赖这种方式传递变量,直接通过Cloud Run控制台或命令行配置才是可靠的方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 02:20:46