Nextjsアプリをc-panel
ホスティングにデプロイする場合、アプリケーションのエントリポイントを要求します。デフォルトはapp.js
です。通常の反応アプリケーションでは完全に制御されますが、nextjs
を使用する場合、アプリケーションを起動するためにどのjsファイルが責任があるかは明確ではありません。
アプリケーションのエントリポイントとして正しいjsファイルを選択することについてのアイデアはありますか?
編集:
私のホスティングプロバイダーは、次のコードを提供して、(nextのリクエストハンドラーを使用する)Expressアプリをセットアップしてリクエストを処理します。
const express = require('express');
const next = require('next');
const dev = process.env.NODE_ENV !== 'production';
const nextApp = next({ dev });
const handle = nextApp.getRequestHandler();
const port = 3454;
nextApp.prepare().then(() => {
const app = express();
app.get('*', (req, res) => {
return handle(req, res);
});
app.listen(port, err => {
if (err) throw err;
console.log(`> Ready on localhost:${port}`);
});
});
動作しますが、オンデマンドでサーバーリクエストに対してソースファイルをコンパイルするため、処理が遅くなります。
私にとっての最善の解決策は、いくつかのプロセスマネージャーを使用してbootstrapアプリケーションを実行することでした。したがって、 PM2 を使用してアプリケーションを起動し、実行を続けました。次のコマンドをc-panel
ターミナルと今はうまく機能します:
NODE_ENV=production pm2 start server.js
与えられたserver.js
には次のコードがあります:
const express = require('express');
const next = require('next');
const dev = process.env.NODE_ENV !== 'production';
const nextApp = next({ dev });
const handle = nextApp.getRequestHandler();
const port = 3454;
nextApp.prepare().then(() => {
const app = express();
app.get('*', (req, res) => {
return handle(req, res);
});
app.listen(port, err => {
if (err) throw err;
console.log(`> Ready on localhost:${port}`);
});
});