这里是server.js
的内容文件:
const express = require("express");
const path = require("path");
const next = require("next");
const dev = false;
const app = next({ dev });
const handle = app.getRequestHandler();
app
.prepare()
.then(() => {
const server = express();
// requests to /service-worker.js
server.get(
"/service-worker.js",
express.static(path.join(__dirname, ".next"))
);
// all other requests
server.get("*", (req, res) => {
return handle(req, res);
});
server.listen(3002, (err) => { // this
if (err) throw err;
console.log("> Ready on http://localhost:3002"); // this
});
})
.catch((ex) => {
console.error(ex.stack);
process.exit(1);
});
正如我所强调的,我正在端口 3002
上运行该项目。但运行后forever start server.js
,仍然http://<ip>:3002
无法访问。
此外,当我运行 yarn start
时在项目的根目录上,它说:
Port 3000 is already in use.
为什么它不关心我在 server.js
中指定的端口?
最佳答案
As I've highlighted, I'm running the project on port 3002
这不是您所做的,您只是让服务器监听端口 3002,但是当您运行 yarn start
时,项目将在默认端口 3000 上启动
您可以在 package.json
文件中以这种方式更改它:
"scripts": {
//...
"dev": "next dev -p 3002",
"start": "next start -p 3002",
},
还需要检查端口本身是否在服务器上监听(lsof | grep -i PORT
),然后在防火墙上启用访问,使用以下命令在防火墙上启用访问:
sudo ufw允许3002/tcp
只要确保 ufw已安装并正确设置。
关于ubuntu - 如何在特定端口上运行 Next.js 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75441007/