我有一个共享的托管服务提供商,可以托管节点应用程序。应用程序入口文件必须称为app.js
,并且必须位于文件夹/usr/home/username/domains/domain/public_nodeapp
中,这有一个限制。首次从网络访问域后,该应用会自动启动(可能由node app.js
之类的应用启动)。
是否可以在诸如服务器端渲染的应用程序之类的提供程序上托管next.js
应用程序(而不是由next export
生成的静态HTML网站)?
运行制作应用程序生产版本的next build
后,生产版本没有app.js
文件,应由next start
启动。我不确定是否以及如何对其进行调整(也许某些文件移动或重命名)以匹配上述限制。
答案 0 :(得分:1)
您可以将app.js
文件放在所需的位置,然后调用从cli触发next start
时要调用的函数。
这意味着该文件应要求https://github.com/zeit/next.js/blob/canary/packages/next/cli/next-start.ts并调用nextStart
。
// app.js
const startServer = require('next/dist/cli/next-start');
startServer();
答案 1 :(得分:1)
是的,您可以使用自定义服务器(例如。 express.js
我为Azure做同样的事情,唯一的区别是我需要一个名为server.js
的文件
示例:
// app.js
const express = require('express');
const next = require('next');
const port = process.env.PORT || 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();
app.prepare().then(() => {
const server = express();
server.all('*', (req, res) => handle(req, res));
server.listen(port, (err) => {
if (err) throw err;
/* eslint no-console: "off" */
console.log(`> Ready on http://localhost:${port}`);
});
});
我希望这会有所帮助。