使用.env文件指定Next.js服务器的服务器监听端口

6ojccjat  于 2023-04-06  发布在  其他
关注(0)|答案(3)|浏览(251)

我一直在寻找如何设置Next.js应用程序的服务器端口的方法。我发现了2种方法:
1.硬编码到package.json文件中:
{“脚本”:{“dev”:“next dev -p 8012”,“build”:“下一次生成”,“开始”:“下一个开始-p 8012”,} }
1.从命令行:npm run dev -- -p 8012PORT=8012 npm run dev
我觉得这些都不好。第一种方法的问题是package.json是由git版本控制的。这意味着我必须在我的本地env上使用与生产环境相同的端口。我可能有其他程序在本地监听该端口。这对我来说很不方便。
第二种方法意味着我的记忆力非常好。我必须记住我想在本地以及生产,登台或任何其他环境中使用的端口。这也是不好的。
理想情况下,我希望在.env文件中指定PORT。我试过了-不起作用。
有人遇到过这样的问题吗?

nhjlsmyf

nhjlsmyf1#

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

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

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

kdfy810k

kdfy810k2#

Next.js目前不支持在.env文件(See discussion)中使用PORT环境变量。
可能适用于您的用例的两个选项是:
1.在您的环境中导出$PORT。但是它也有缺点,如链接讨论中所指出的。

# In your shell
export PORT=8012
// package.json
"scripts": {
    "start": "next start --port ${PORT-3000}",
},

1.创建一个自定义启动脚本,从.env文件中读取端口。
一个二个一个一个

efzxgjgh

efzxgjgh3#

在windows上,我找不到一个简单的方法来使用npm run start和设置端口。我的解决方法是使用不同的脚本。

"dev": "next dev", -- for development
"start": "next start -p $PORT", -- for deployment
"next": "next start -p 3000", -- for local testing after build

相关问题