首页 > 解决方案 > 构建后更改 next.config.js 变量

问题描述

我使用 nextjs 创建了一个应用程序,并将 next.config.jspublicRuntimeConfig用于可以更改的变量。我存储诸如页面默认标题和/或我的站点配置之类的内容。

可以为具有不同设置的不同客户安装此应用程序。

例如,我有一个AGENCY_NAME属性,里面publicRuntimeConfig对于不同的客户显然是不同的。

一个可以是“公司 1”,另一个可以是“公司 2”。

我构建了这个应用程序一次并将其移动到我的服务器,然后为每个新客户复制相同的文件夹并为其创建一个主机。

但是当我尝试更改其中的变量时, next.config.js它不会影响值并且值保持不变。只有当我重建我不想做的应用程序时它才会生效。

那么,是否有可能对此进行一些解决方法,或者是否有任何其他方法可以实现这一目标?我只想有一些可以在生产后期更改的变量。

注意:变量在服务器端和客户端都使用。

标签: webpacknext.js

解决方案


好的!3天后我想通了。

这是实现这一目标的步骤。

  1. 使用或安装dotenv软件包npm i dotenvyarn add dotenv

  2. .env.local在项目根目录中创建文件

  3. 在 .env 文件中添加变量

  4. 像这样创建next.config.js和你的变量publicRuntimeConfig

    publicRuntimeConfig: {
        FIRST_VAR: process.env.NEXT_PUBLIC_FIRST_VAR,
        SECOND_VAR: process.env.NEXT_PUBLIC_SECOND_VAR,
    }
    
  5. 使用创建构建npx next build

  6. .env.local当您需要更改变量时,只需更改文件

老实说,我不知道为什么安装 dotenv 包可以解决这个问题。我最好的猜测是,它改变了 nextjs 的行为方式和使用 .env 文件的方式。


推荐阅读