我正在尝试在我的 Digital Ocean Droplet(使用 OpenLiteSpeed)上运行 Next js 应用程序。
我有包含以下内容的 start.js 文件:
const { createServer } = require('http')
const { parse } = require('url')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
app.prepare().then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url, true)
const { pathname, query } = parsedUrl
handle(req, res, parsedUrl)
}).listen(80, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:80')
})
})
当我从控制台调用此文件时:node start.js,我的站点在端口 80 上成功运行。
但是,当我尝试将此文件添加为应用服务器上下文定义中的启动文件时,站点未运行,并且无法访问我的网站。
但是当我将文件更改为默认文件(app.js)时:
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World! From OpenLiteSpeed NodeJS\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://:/`);
});
该网站已通过 Hello World 成功打开。
宽限期重启完成。将端口更改为 3000 (例如)并没有多大帮助:我有同样的行为。
我做错了什么?
更新: 我找到了临时解决方案:node start.js & disown
然后关闭终端。请任何人告诉我这种方法的缺点。