カスタムサーバー
Next.jsはデフォルトで next start
で独自のサーバーを備えています。既存のバックエンドがある場合でも、Next.jsと一緒に使用できます(これはカスタムサーバーではありません)。カスタムNext.jsサーバーにより、カスタムパターンのサーバーをプログラム的に起動できます。ほとんどの場合、このアプローチは必要ありません。ただし、必要に応じて切り出すことができます。
補足 :
カスタムサーバーの使用を決める前に、Next.jsの統合ルーターがアプリの要件を満たせない場合にのみ使用すべきであることに注意してください。カスタムサーバーは、**自動静的最適化 **などの重要なパフォーマンス最適化を削除します。
カスタムサーバーはVercel にデプロイできません 。
スタンドアロン出力モードを使用する場合、カスタムサーバーファイルはトレースされません。代わりに、別の最小限の server.js
ファイルが出力されます。これらは一緒に使用できません。
カスタムサーバーの以下の例 を参照してください:
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 http://localhost: ${ port } as ${
dev ? ' development ' : process . env . NODE_ENV
} `
)
})
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 http://localhost: ${ port } as ${
dev ? ' development ' : process . env . NODE_ENV
} `
)
})
server.js
はNext.jsコンパイラやバンドリングプロセスを通過しません。使用しているNode.jsのバージョンと互換性のある構文とソースコードであることを確認してください。例を参照 。
カスタムサーバーを実行するには、package.json
のscripts
を次のように更新する必要があります:
{
" 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
で使用するものと同じオブジェクト。デフォルトは {}
customServer
Boolean
(オプション)サーバーがNext.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がリクエストを処理できます。