【问题标题】:Using .env file to specify server listening port of the Next.js server使用 .env 文件指定 Next.js 服务器的服务器监听端口
【发布时间】:2022-08-18 15:38:00
【问题描述】:

我一直在寻找如何设置 Next.js 应用程序的服务器端口的方法。 我找到了两种方法:

  1. 硬编码到包.json文件:

    { \“脚本\”:{ \"dev\": \"下一个 dev -p 8012\", \"构建\": \"下一个构建\", \"开始\": \"下一个开始-p 8012\", } }

  2. 从命令行:npm run dev -- -p 8012PORT=8012 npm run dev

    这些对我来说都不是很好。 第一种方法的问题是包.json由 git 版本控制。这意味着我必须在本地环境中使用与生产环境相同的端口。我可能有一些其他程序在本地侦听该端口。这对我来说很不方便。

    第二种方法意味着我的记忆对我很有帮助。我必须记住我想在本地以及生产、登台或任何其他环境中使用的端口。这也不行。

    理想情况下,我希望在.env 文件中指定端口。 我试过了 - 不起作用。

    有没有人遇到过这样的问题?

    标签: next.js


    【解决方案1】:

    Next.js 目前不支持在 .env 文件 (See discussion) 中使用 PORT 环境变量。

    可能适用于您的用例的两个选项是:

    1. 在您的环境中导出$PORT。但正如链接讨论中指出的那样,它有缺点。
      # In your shell
      export PORT=8012
      
      // package.json
      "scripts": {
          "start": "next start --port ${PORT-3000}",
      },
      
      1. 创建custom start script 以从.env 文件中读取端口。
      //server.js
      const cli = require('next/dist/cli/next-start');
      cli.nextStart(['-p', process.env.PORT || 3000]);
      
      //package.json
      {
        "scripts": {
          "start": "node server.js",
        }
      }
      

    【讨论】:

      【解决方案2】:

      您可以使用以下启动脚本从.env 文件中读取PORT 环境变量:

      // package.json
      "scripts": {
        "start": "[ -e .env ] && set -a && . ./.env; next start",
      },
      

      使用set -a 将导出源环境变量,Next.JS 启动脚本将在PORT 环境变量中定义的端口启动服务器。如果.env 文件不存在或PORT 未在文件中定义,则PORT 未设置并使用默认端口。请注意,此脚本在 Windows 中不起作用。

      【讨论】:

        猜你喜欢
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 2011-09-14
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2014-03-23
        相关资源
        最近更新 更多