我在这里发现,使用一个.env文件与PORT=....将告诉下一个js在服务期间改变端口。但它总是回落到3000。我不希望它被硬编码到我的package.json中。有什么提示吗?
6psbrbz91#
如果你绝对不想在你的package.json中使用它,那么我想可以使用dotenv-cli包将它整合在一起。这样,包含PORT的.env文件就可以在启动服务器之前加载到shell中。package.json中的脚本可能如下所示:
package.json
.env
"scripts": { "start:dev": "dotenv -e .env.development next dev", "start": "dotenv -e .env.production next start" }
本质上,dotenv命令加载-e选项指定的.env文件,并将其余的位置参数(例如,next dev)作为命令,使用从该文件加载的变量运行。请记住,Next.js在启动后也会自己读取.env文件(它只是在端口被声明和服务器启动后才这样做)。它有一些默认路径可用于组织它们。
dotenv
-e
next dev
3mpgtkmj2#
package.json:
"scripts": { "dev": "next dev", "start": "next start", },
解决方案:在启动Next.js服务器之前设置PORT。说明:如果你把它放在.env文件中,它不会使用它,因为它在启动服务器后读取文件。示例:PORT=8080 npm run dev或PORT=80 npm start。
PORT
PORT=8080 npm run dev
PORT=80 npm start
希望这有帮助!
2条答案
按热度按时间6psbrbz91#
如果你绝对不想在你的
package.json
中使用它,那么我想可以使用dotenv-cli包将它整合在一起。这样,包含PORT的.env
文件就可以在启动服务器之前加载到shell中。package.json
中的脚本可能如下所示:本质上,
dotenv
命令加载-e
选项指定的.env
文件,并将其余的位置参数(例如,next dev
)作为命令,使用从该文件加载的变量运行。请记住,Next.js在启动后也会自己读取
.env
文件(它只是在端口被声明和服务器启动后才这样做)。它有一些默认路径可用于组织它们。3mpgtkmj2#
package.json:
解决方案:在启动Next.js服务器之前设置
PORT
。说明:如果你把它放在
.env
文件中,它不会使用它,因为它在启动服务器后读取文件。示例:
PORT=8080 npm run dev
或PORT=80 npm start
。希望这有帮助!