当前位置: 首页 > 知识库问答 >
问题:

如何通过app将环境变量传递给google app engine。亚马尔?

程智明
2023-03-14

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

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

gcloud app deploy

我的应用。yaml如下(减去变量替换):

runtime: nodejs12
env_variables:
  NEXT_PUBLIC_FRONTEND_URL: "A"

我的代码如下:

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

当此代码在app engine中运行时,url的计算结果为B/login/callback

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

这有什么原因吗?我已从本地计算机上取消设置变量,以防它们以某种方式被传递,然后我删除了。env文件,以防nginx找到它或类似的东西。

共有1个答案

公羊浩阔
2023-03-14

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

>

  • 确认您没有直接在代码中的某个地方设置值,例如,假设您调用一个子进程并将env传递给它,并且您已经在那里显式设置了值

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

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

    控制台。云谷歌。通用域名格式

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

    选择版本并单击“配置”列下的“查看”。这将显示已部署的应用程序。该版本的yaml文件

  •  类似资料:
    • 问题内容: 我是Docker的新手,目前尚不清楚如何从容器访问外部数据库。硬编码连接字符串的最佳方法是吗? 问题答案: 您可以使用该标志将环境变量传递到您的容器。 启动脚本的示例: 或者,如果您不希望在命令行中使用,等显示该值,则可以直接从当前环境中获取该值,如果您不带: 如果您有许多环境变量,尤其是要保密的话,可以使用env文件: --env-file标志将文件名作为参数,并期望每行采用VAR

    • 我是Docker的新手,不清楚如何从容器访问外部数据库。是在连接字符串中硬编码的最佳方法吗?

    • 问题内容: 如何将主机环境变量(例如用户名和主机名)传递给dockerfile? 例如,如果我的用户名是: 如何编写Docker文件以获得相同的输出? 问题答案: 我遇到了同样的问题。我的解决方案是在docker-compose.yml内部提供变量,因为yml支持使用环境变量。 我认为这对我来说是最有效的方式,因为我不喜欢在命令行中使用类似以下内容一遍又一遍地键入它 在容器中,声明将无效,将设置为

    • 我正在使用GAE部署我的应用程序,我想把一些环境变量传递给我的GAE实例。例如,每次我使用DB时,分配当前是这样的: 这很好,但问题是它是一个共享代码,每次有人进行本地测试时,它都会更改路径,并将更改推送到存储库。当有人拉动新的更改时,它需要更改以发出db请求,因为每个人都有不同的套接字更改路径。因此,我创建了以下声明: 因此,如果某个人的系统中有一个环境变量,那么它会接受该变量并避免绝对路径。问

    • 问题内容: 我正在尝试使用PowerShell将环境变量传递给Node.js,如下所示: 但是我在PowerShell中收到一个错误: 令牌“节点”意外的表达式或语句 问题答案: 首先设置环境变量,然后按以下方式运行您的应用程序: 您可以通过以下方式访问内部的环境变量 注意:PowerShell不直接支持命令范围的环境变量。上面的命令为该PowerShell会话设置环境变量。

    • 问题内容: 我开始使用Grunt,并希望将变量传递给我通过exec运行的PhantomJS脚本。我想要做的是为脚本传递URL,以从中获取屏幕截图。任何帮助将不胜感激,谢谢! 达伦 咕script声脚本 screenshot.js 问题答案: 命令行参数可通过模块(Module )访问。第一个始终是脚本名称,然后是后续参数 该脚本将枚举所有参数,并将其写到控制台。 在您的情况下,解决方案是 咕unt