[英]What's the proper way of setting environment variable in Netlify functions?
在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
。
您无法在Netlify函数中解析环境变量的原因是因为截至您提问时, Netlify不会从netlify.toml
文件传输环境变量。
您必须将它们放入app.netlify.com
仪表板中站点设置的管理面板中。
不幸的是,您目前所期待的似乎并不支持。 虽然他们提供了另一种方法。
我在他们的文档上找到了这个片段:
呼吁环境变量
不支持在netlify.toml文件中直接使用环境变量作为值($ VARIABLENAME)。 但是,假设您只是尝试更改标题或重定向,可以使用以下工作流将文件中的值替换为环境变量值。 在构建之前读取文件的其余部分 - 但是在构建过程之后会读取这些部分。
- 在netlify.toml重定向或标题部分的某处添加一个占位符,如HEADER_PLACEHOLDER。
- 使用所需的值创建环境变量,例如PROD_API_LOCATION。 您可以在toml文件或UI中创建环境变量。 您可以使用后者将敏感值保留在存储库之外。
- 在构建命令前添加替换命令。 以下是使用纱线构建来构建网站的示例:sed -is / HEADER_PLACEHOLDER / $ {PROD_API_LOCATION} / g netlify.toml && yarn build
摘自此处: https : //www.netlify.com/docs/netlify-toml-reference/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.