9

我想根据环境代理到不同的 api - 我已经尝试了以下主题的一些变体,但没有任何运气。如果可能的话,这样做的正确方法是什么?

[build.environment]
  API_URI="https://dev-api.foo.com/:splat"

[context.production.environment]
  API_URI="https://prod-api.foo.com/:splat"

[[redirects]]
  from = "/api/*"
  to = "$API_URI"
  status = 200
  force = true

这不起作用。

虽然上面的配置在我将 URI 硬编码到to字段中时有效,但当我尝试插入 env var 时它就失败了。

4

3 回答 3

8

它不受支持,但 Netlify 在他们的文档中建议了一种解决方法(https://www.netlify.com/docs/netlify-toml-reference):

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

  1. 在 netlify.toml 重定向或标题部分的某处添加一个占位符,如 API_KEY_PLACEHOLDER。
  2. 创建具有所需值的构建环境变量,例如 API_KEY。您可以在 toml 文件中执行此操作,也可以在配置的 Build and Deploy Settings 部分的 UI 中执行此操作。您可以使用后者将敏感值保留在存储库之外。
  3. 将这样的命令添加到您的构建命令中: sed -i s/API_KEY_PLACEHOLDER/$API_KEY/g netlify.toml && 正常构建命令。
于 2018-10-08T13:08:04.277 回答
1

回答我自己的问题 - 它不受支持,您必须自己手动插入 env var,作为 Netlify 构建的一部分。

于 2018-06-11T12:25:35.893 回答
0

是的。这是可能的。这是详细的文档:https ://www.netlify.com/docs/continuous-deployment/#deploy-contexts

就我而言,我需要REACT_APP_API_URL为生产和所有其他分支设置一个单独的分支。这是我使用的:

[context.production.environment]
  REACT_APP_API_URL = "https://api.test.im"

[context.deploy-preview.environment]
  REACT_APP_API_URL = "https://api-staging.test.im"

[context.branch-deploy.environment]
  REACT_APP_API_URL = "https://api-staging.test.im"
于 2018-08-13T08:28:47.050 回答