【问题标题】:NextJS: Prevent env vars to be required on build timeNextJS:防止在构建时需要环境变量
【发布时间】:2020-04-27 22:29:05
【问题描述】:

我们正在开发一个 Dockerized NextJS 应用程序,该应用程序被认为是一次构建并部署到我们将有不同配置的多个环境中。当部署为环境变量时,此配置将在 Docker 容器中设置。

为了实现这一点,我们使用 next.config.js 文件,按照建议 here 拆分 serverRuntimeConfigpublicRuntimeConfig 上的变量,并且我们从 process.env 获取环境变量的值.即:

module.exports = {
  serverRuntimeConfig: {
    mySecret: process.env.MY_SECRET,
    secondSecret: process.env.SECOND_SECRET,
  },
  publicRuntimeConfig: {
    staticFolder: process.env.STATIC_FOLDER_URL,
  },
}

我们遇到的问题是这些变量没有在构建时设置(当我们运行next build 时),因为它们是特定于环境的并且应该在部署时设置。因此,构建失败并抱怨缺少变量。

根据环境进行构建不是一种选择:如前所述,我们希望构建一次(使用next build),将构建的输出放入 docker 容器中,并在多个环境中使用该 docker 容器部署.

有没有办法解决这个问题,以便应用程序在没有环境变量的情况下构建,然后我们在运行时(部署)时传递它们?

【问题讨论】:

    标签: docker next.js


    【解决方案1】:

    我们终于找到了问题。

    我们在一个帮助器中导入代码,该帮助器在同构端使用并在 serverRuntimeConfig 变量上进行中继,然后在构建时需要它来创建捆绑包。

    从帮助程序中删除导入解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-14
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 2022-07-28
      • 2021-08-15
      相关资源
      最近更新 更多