カスタムサーバー
Next.jsはデフォルトでnext startによる独自のサーバーを含んでいます。既存のバックエンドがある場合でも、Next.jsと組み合わせて使用できます(これはカスタムサーバーではありません)。カスタムNext.jsサーバーを使用すると、カスタムパターン用にプログラムでサーバーを起動できます。ほとんどの場合、このアプローチは必要ありません。ただし、独自のサーバーを導入する必要がある場合には利用できます。
知っておくと良いこと:
カスタムサーバーの以下の例をご覧ください
server.ts
import { createServer } from 'http'
import { parse } from 'url'
import next from 'next'
 
const port = parseInt(process.env.PORT || '3000', 10)
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)
    handle(req, res, parsedUrl)
  }).listen(port)
 
  console.log(
    `> Server listening at https://:${port} as ${
      dev ? 'development' : process.env.NODE_ENV
    }`
  )
})
server.jsはNext.jsコンパイラやバンドルプロセスを経由しません。このファイルが必要とする構文とソースコードが、現在使用しているNode.jsのバージョンと互換性があることを確認してください。例を見る。
カスタムサーバーを実行するには、package.jsonのscriptsを以下のように更新する必要があります
package.json
{
  "scripts": {
    "dev": "node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }
}あるいは、nodemonをセットアップすることもできます(例)。カスタムサーバーは、サーバーとNext.jsアプリケーションを接続するために以下のインポートを使用します
import next from 'next'
 
const app = next({})上記のnextインポートは、以下のオプションを持つオブジェクトを受け取る関数です
| オプション | 型 | 説明 | 
|---|---|---|
| conf | Object | next.config.jsで使用するのと同じオブジェクトです。デフォルトは{}です | 
| dev | Boolean | (任意) Next.jsを開発モードで起動するかどうか。デフォルトは falseです | 
| dir | String | (任意) Next.jsプロジェクトの場所。デフォルトは '.'です | 
| quiet | Boolean | (任意) サーバー情報を含むエラーメッセージを非表示にします。デフォルトは falseです | 
| hostname | String | (任意) サーバーが稼働しているホスト名 | 
| port | Number | (任意) サーバーが稼働しているポート | 
| httpServer | node:http#Server | (任意) Next.jsが稼働しているHTTPサーバー | 
| turbo | Boolean | (任意) Turbopackを有効にする | 
返されたappは、必要に応じてNext.jsにリクエストを処理させるために使用できます。
お役に立ちましたか?