我一直在寻找一种如何设置 Next.js 应用程序的服务器端口的方法。我找到了2种方法:
硬编码到package.json文件中:
{ “scripts”:{ “dev”:“下一个 dev -p 8012”, “build”:“下一个构建”, “start”:“下一个启动 -p 8012”, } }
从命令行:npm run dev -- -p 8012或PORT=8012 npm run dev
这些对我来说都不好看。第一种方法的问题是package.json由 git 进行版本控制。这意味着我必须在本地环境上使用与生产中使用的相同的端口。我可能有其他程序在本地侦听该端口。这对我来说很不方便。
第二种方法意味着我的记忆力非常好。我必须记住我想在本地以及生产、登台或任何其他环境中使用的端口。这也不行。
理想情况下,我希望在.env文件中指定端口。我尝试过 - 不起作用。
有人遇到过这样的问题吗?
小智 7
Next.js 目前不支持PORT在.env文件内使用环境变量(请参阅讨论)。
适合您的用例的两个选项是:
$PORT。但正如链接讨论中指出的那样,它也有缺点。# In your shell
export PORT=8012
Run Code Online (Sandbox Code Playgroud)
// package.json
"scripts": {
"start": "next start --port ${PORT-3000}",
},
Run Code Online (Sandbox Code Playgroud)
.env。//server.js
const cli = require('next/dist/cli/next-start');
cli.nextStart(['-p', process.env.PORT || 3000]);
Run Code Online (Sandbox Code Playgroud)
//package.json
{
"scripts": {
"start": "node server.js",
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下启动脚本PORT从文件中读取环境变量:.env
// package.json
"scripts": {
"start": "[ -e .env ] && set -a && . ./.env; next start",
},
Run Code Online (Sandbox Code Playgroud)
使用将set -a导出源环境变量,Next.JS 启动脚本将在环境变量中定义的端口中启动服务器PORT。如果.env文件不存在或未PORT在文件中定义,则PORT不会设置并使用默认端口。请注意,此脚本在 Windows 中不起作用。
从文件读取端口的一种简单方法.env是使用dotenv-cli包:
npm install dotenv-cliPORT环境变量(省略标志以仅读取文件):.env.env.local-c.env"start": "dotenv -c -- next start",
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13081 次 |
| 最近记录: |