【问题标题】:What's the proper way of setting environment variable in Netlify functions?在 Netlify 函数中设置环境变量的正确方法是什么?
【发布时间】:2019-07-28 02:01:00
【问题描述】:

在netlify中设置环境变量的正确方法是什么?我希望能够根据环境为变量设置不同的值。

伪代码:

let host;
if (process.env.GATSBY_CUSTOM_CONTEXT === 'production') {
    host = process.env.PRODUCTION_HOST
} else if (process.env.GATSBY_CUSTOM_CONTEXT === 'development') {
    host = process.env.DEVELOPMENT_HOST
}

我尝试通过 CLI 传递 env 变量,例如 GATSBY_CUSTOM_CONTEXT=production gatsby build,我还尝试使用与 cross-env 相同的命令。

我的另一个尝试使用了netlify.toml:

[build]
  base = "/"
  publish = "public"
  command = "yarn build"
  functions = "src/functions"

[context.production]
  [context.production.environment]
    GATSBY_CUSTOM_CONTEXT = "production"

所有这些选项都在本地使用 netlify dev,但在生产中 GATSBY_CUSTOM_CONTEXT 始终是 undefined。

【问题讨论】:

  • 你正在构建什么操作系统?
  • Ubuntu Xenial 16.04
  • 你是在客户端还是服务器端读取这些环境变量?
  • 服务器端。我正在使用 netlify 函数

标签: javascript node.js lambda gatsby netlify


【解决方案1】:

您无法解析 Netlify 函数中的环境变量的原因是,截至您提出问题时,Netlify 并未从 netlify.toml 文件中传输环境变量。 p>

您必须在app.netlify.com 仪表板的站点设置中将它们放入管理面板中。

【讨论】:

    【解决方案2】:

    很遗憾,目前似乎不支持您要查找的内容。尽管它们提供了另一种方法。

    我在他们的文档上找到了这个 sn-p:

    调用环境变量

    直接使用环境变量作为 不支持 netlify.toml 文件中的值 ($VARIABLENAME)。 但是,以下工作流程可用于替换中的值 具有环境变量值的文件,假设您只是 试图更改标题或重定向。读取文件的其余部分 在您构建之前 - 但这些部分是在构建之后阅读的 过程。

    1. 在 netlify.toml 重定向或标题部分的某处添加一个占位符,例如 HEADER_PLACEHOLDER。
    2. 使用所需的值创建一个环境变量,例如 PROD_API_LOCATION。您可以在 toml 文件或在我们的 UI 中。您可以使用后者来保持敏感 存储库中的值。
    3. 在构建命令前添加替换命令。下面是一个使用 yarn build 构建站点的示例:sed -i s/HEADER_PLACEHOLDER/${PROD_API_LOCATION}/g netlify.toml && yarn build

    取自这里:https://www.netlify.com/docs/netlify-toml-reference/

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 2023-04-02
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2014-12-08
      相关资源
      最近更新 更多