[英]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.