Javascript 什么';在Netlify函数中设置环境变量的正确方法是什么?

Javascript 什么';在Netlify函数中设置环境变量的正确方法是什么?,javascript,node.js,lambda,gatsby,netlify,Javascript,Node.js,Lambda,Gatsby,Netlify,在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.DEVELO

在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\u CUSTOM\u 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_上下文
始终是
未定义的

不幸的是,您正在寻找的内容目前似乎不受支持。尽管它们提供了另一种方法

我在他们的文档中发现了以下片段:

调用环境变量

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

  • 在netlify.toml重定向或标题部分的某个位置添加类似标题的占位符
  • 使用所需的值创建环境变量,例如PROD_API_LOCATION。可以在中创建环境变量 toml文件或在我们的UI中。你可以用后者来保持敏感 从存储库中删除值
  • 在生成命令前添加替换命令。下面是一个使用纱线构建的站点示例:sed-i s/HEADER\u PLACEHOLDER/${PROD\u API\u LOCATION}/g netlify.toml&&warn build

  • 从这里可以看出:

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


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

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