簡體   English   中英

在Netlify函數中設置環境變量的正確方法是什么?

[英]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)。 但是,假設您只是嘗試更改標題或重定向,可以使用以下工作流將文件中的值替換為環境變量值。 在構建之前讀取文件的其余部分 - 但是在構建過程之后會讀取這些部分。

  1. 在netlify.toml重定向或標題部分的某處添加一個占位符,如HEADER_PLACEHOLDER。
  2. 使用所需的值創建環境變量,例如PROD_API_LOCATION。 您可以在toml文件或UI中創建環境變量。 您可以使用后者將敏感值保留在存儲庫之外。
  3. 在構建命令前添加替換命令。 以下是使用紗線構建來構建網站的示例: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM