在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传递环境变量,例如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
。
答案 0 :(得分:1)
您无法在Netlify函数中解析环境变量的原因是在您提出问题时, Netlify不会从netlify.toml
文件中传输环境变量。
您必须将它们放入app.netlify.com
信息中心的网站设置中的管理面板中。
答案 1 :(得分:0)
不幸的是,您正在寻找的内容目前似乎不受支持。尽管它们提供了另一种方法。
我在他们的文档中找到了以下代码段:
调用环境变量
直接将环境变量用作 您的netlify.toml文件中的值($ VARIABLENAME)不支持。 但是,以下工作流程可用于替换值 假设您只是具有环境变量值的文件 尝试更改标题或重定向。读取文件的其余部分 构建之前-但是构建之后会阅读这些部分 过程。
- 在netlify.toml重定向或标题部分的某处添加一个占位符,例如HEADER_PLACEHOLDER。
- 创建一个具有所需值的环境变量,例如PROD_API_LOCATION。您可以在 toml文件或在我们的UI中。您可以使用后者保持敏感 值从存储库中移出。
- 将替换命令添加到您的build命令中。这是一个使用yarn build构建站点的示例:sed -i s / HEADER_PLACEHOLDER / $ {PROD_API_LOCATION} / g netlify.toml && yarn build