Next.js بهصورت پیشفرض دارای سرور داخلی است که با دستور next start اجرا میشود. اگر اپلیکیشن شما نیاز به کنترل خاصی روی مسیرها یا درخواستها دارد، میتوانید از سرور سفارشی استفاده کنید. این روش بیشتر برای موارد خاص توصیه میشود.
standalone، فایلهای سرور سفارشی trace نمیشوند و با فایل server.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 http://localhost:${port} as ${
dev ? 'development' : process.env.NODE_ENV
}`
)
}){
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "NODE_ENV=production node server.js"
}
}در صورت نیاز، میتوانید از nodemon برای اجرای خودکار در حالت توسعه استفاده کنید.
تابع next() یک شیء تنظیمات دریافت میکند:
| گزینه | نوع | توضیح |
|---|---|---|
| conf | Object | تنظیمات مشابه next.config.js |
| dev | Boolean | فعالسازی حالت توسعه |
| dir | String | مسیر پروژه Next.js |
| quiet | Boolean | پنهانسازی پیامهای خطا |
| hostname | String | نام هاست سرور |
| port | Number | پورت سرور |
| httpServer | Server | سرور HTTP موجود |
| turbopack | Boolean | فعالسازی Turbopack |
| webpack | Boolean | فعالسازی Webpack |
سرور سفارشی در Next.js امکان کنترل دقیقتر مسیرها و درخواستها را فراهم میکند، اما باید با دقت استفاده شود. در بیشتر پروژهها، Router داخلی Next.js کافی است. اگر نیاز به سرور سفارشی دارید، مطمئن شوید که از حالت standalone استفاده نمیکنید و عملکرد اپلیکیشن را بهدرستی ارزیابی کردهاید.