我有一个共享托管提供程序,可以托管节点应用程序。它有一个限制,即应用程序条目文件必须称为app.js
,并且必须位于文件夹/usr/home/username/domains/domain/public_nodeapp
中。该应用程序在首次从web访问域时自动启动(可能是由类似node app.js
的程序启动(。
是否可以在服务器端渲染应用程序(而不是next export
生成的静态HTML站点(这样的提供商上托管next.js
应用程序?
在运行next build
(该应用程序的生产版本(后,生产版本没有app.js
文件,应该由next start
启动。我不确定是否以及如何对其进行调整(可能是一些文件移动或重命名(以符合上述限制。
您可以将app.js
文件放在所需的位置,然后调用从cli触发next start
时将调用的函数。
这意味着这个文件应该需要https://github.com/zeit/next.js/blob/canary/packages/next/cli/next-start.ts并调用CCD_ 11。
// app.js
const startServer = require('next/dist/cli/next-start');
startServer();
是的,您可以使用自定义服务器来完成,例如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}`);
});
});
我希望这能有所帮助。