2

我正在尝试在我的 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 上成功运行。

但是,当我尝试将此文件添加为应用服务器上下文定义中的启动文件时,站点未运行,并且无法访问我的网站。

数字海洋接口1

但是当我将文件更改为默认文件(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 成功打开。

侦听器已成功设置到端口 80: 数字海洋接口2

宽限期重启完成。将端口更改为 3000 (例如)并没有多大帮助:我有同样的行为。

我做错了什么?

更新: 我找到了临时解决方案:node start.js & disown

然后关闭终端。请任何人告诉我这种方法的缺点。

4

0 回答 0