首页 > 解决方案 > 如何通过 app.yaml 将环境变量传递给谷歌应用引擎?

问题描述

我正在使用 Google App Engine 部署节点应用程序(nextjs,node-12)。

要部署应用程序,我运行:

gcloud app deploy

我的 app.yaml 如下(减去变量替换):

runtime: nodejs12
env_variables:
  NEXT_PUBLIC_FRONTEND_URL: "A"

在我的代码中是以下行:

const url = `${process.env.NEXT_PUBLIC_FRONTEND_URL}/login/callback`;

当此代码在应用引擎中运行时,url 评估为 B/login/callback

我不明白这种行为。此处的文档(https://cloud.google.com/appengine/docs/standard/nodejs/config/appref)似乎向我表明这应该有效,但事实并非如此。

是否有一个原因?我已经从本地计算机中取消设置变量,以防它们以某种方式通过,并且我删除了 .env 文件以防 nginx 正在采购它或类似的东西。

标签: google-app-enginegoogle-cloud-platform

解决方案


你所做的看起来是正确的。尝试以下故障排除步骤

  1. 确认您没有直接在代码中的某处设置值,例如说您调用子进程并将其传递env给它,并且您已在此处明确设置值

  2. 检查您部署的版本(您可以通过云控制台执行此操作,请参见下面的路径)。您有多个版本的应用程序吗?你跑哪一个?

检查您的版本以及正在运行的版本

console.cloud.google.com > App Engine > Versions

要查看每个已部署版本的配置,

select the version and click on 'View' under the 'config' column . 这将显示该版本的部署app.yaml文件


推荐阅读