Next.js应用程序部署为ssr应用程序,有一些托管提供商限制



我有一个共享托管提供程序,可以托管节点应用程序。它有一个限制,即应用程序条目文件必须称为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}`);
});
});

我希望这能有所帮助。

相关内容

最新更新