| icon | akar-icons:node-fill |
|---|
Run Nitro apps with Node.js runtime.
Preset: node_server
Node.js is the default nitro output preset for production builds and Nitro has native Node.js runtime support.
Build project using nitro CLI:
nitro build
When running nitro build with the Node server preset, the result will be an entry point that launches a ready-to-run Node server. To try output:
$ node .output/server/index.mjs
Listening on http://localhost:3000
You can now deploy fully standalone .output directory to the hosting of your choice.
You can customize server behavior using following environment variables:
NITRO_PORTorPORT(defaults to3000)NITRO_HOSTorHOSTNITRO_UNIX_SOCKET- if provided (a path to the desired socket file) the service will be served over the provided UNIX socket (Node.js and Bun only).NITRO_SSL_CERTandNITRO_SSL_KEY- if both are present, this will launch the server in HTTPS mode. In the vast majority of cases, this should not be used other than for testing, and the Nitro server should be run behind a reverse proxy like nginx or Cloudflare which terminates SSL.NITRO_SHUTDOWN_DISABLED- Disables the graceful shutdown feature when set to'true'. Defaults to'false'.NITRO_SHUTDOWN_TIMEOUT- Sets the amount of time (in milliseconds) before a forced shutdown occurs. Defaults to5000milliseconds.
Preset: node_cluster
For more performance and leveraging multi-core handling, you can use cluster preset.
In addition to environment variables from the node_server preset, you can customize behavior:
NITRO_CLUSTER_WORKERS: Number of cluster workers (default is Number of available cpu cores)
Preset: node
Nitro also has a more low-level preset that directly exports a function with (req, res) => {} signature usable for middleware and custom servers.
When running nitro build with the Node preset, the result will be an entry point exporting a function with the (req, res) => {} signature.
Example:
import { createServer } from 'node:http'
import { listener } from './.output/server'
const server = createServer(listener)
server.listen(8080)