[{"data":1,"prerenderedAt":733},["ShallowReactive",2],{"navigation":3,"-deploy-runtimes-node":389,"-deploy-runtimes-node-surround":728},[4,83,212,218,374,386],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":209,"path":210,"stem":211},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":213,"path":214,"stem":215,"children":216,"icon":36},"Config","/config","3.config/0.index",[217],{"title":213,"path":214,"stem":215,"icon":36},{"title":219,"path":220,"stem":221,"children":222,"icon":224},"Examples","/examples","4.examples/0.index",[223,225,230,235,240,245,249,254,259,264,269,274,279,283,288,292,296,301,306,311,316,321,326,331,336,341,345,350,355,359,364,369],{"title":219,"path":220,"stem":221,"icon":224},"i-lucide-folder-code",{"title":226,"path":227,"stem":228,"icon":229},"API Routes","/examples/api-routes","4.examples/api-routes","i-lucide-route",{"title":231,"path":232,"stem":233,"icon":234},"Auto Imports","/examples/auto-imports","4.examples/auto-imports","i-lucide-import",{"title":236,"path":237,"stem":238,"icon":239},"Cached Handler","/examples/cached-handler","4.examples/cached-handler","i-lucide-clock",{"title":241,"path":242,"stem":243,"icon":244},"Custom Error Handler","/examples/custom-error-handler","4.examples/custom-error-handler","i-lucide-alert-circle",{"title":38,"path":246,"stem":247,"icon":248},"/examples/database","4.examples/database","i-lucide-database",{"title":250,"path":251,"stem":252,"icon":253},"Elysia","/examples/elysia","4.examples/elysia","i-skill-icons-elysia-dark",{"title":255,"path":256,"stem":257,"icon":258},"Express","/examples/express","4.examples/express","i-simple-icons-express",{"title":260,"path":261,"stem":262,"icon":263},"Fastify","/examples/fastify","4.examples/fastify","i-simple-icons-fastify",{"title":265,"path":266,"stem":267,"icon":268},"Hello World","/examples/hello-world","4.examples/hello-world","i-lucide-sparkles",{"title":270,"path":271,"stem":272,"icon":273},"Hono","/examples/hono","4.examples/hono","i-logos-hono",{"title":275,"path":276,"stem":277,"icon":278},"Import Alias","/examples/import-alias","4.examples/import-alias","i-lucide-at-sign",{"title":280,"path":281,"stem":282,"icon":46},"Middleware","/examples/middleware","4.examples/middleware",{"title":284,"path":285,"stem":286,"icon":287},"Mono JSX","/examples/mono-jsx","4.examples/mono-jsx","i-lucide-brackets",{"title":289,"path":290,"stem":291,"icon":287},"Nano JSX","/examples/nano-jsx","4.examples/nano-jsx",{"title":48,"path":293,"stem":294,"icon":295},"/examples/plugins","4.examples/plugins","i-lucide-plug",{"title":297,"path":298,"stem":299,"icon":300},"Custom Renderer","/examples/renderer","4.examples/renderer","i-lucide-code",{"title":302,"path":303,"stem":304,"icon":305},"Runtime Config","/examples/runtime-config","4.examples/runtime-config","i-lucide-settings",{"title":307,"path":308,"stem":309,"icon":310},"Server Fetch","/examples/server-fetch","4.examples/server-fetch","i-lucide-arrow-right-left",{"title":312,"path":313,"stem":314,"icon":315},"Shiki","/examples/shiki","4.examples/shiki","i-lucide-highlighter",{"title":317,"path":318,"stem":319,"icon":320},"Virtual Routes","/examples/virtual-routes","4.examples/virtual-routes","i-lucide-box",{"title":322,"path":323,"stem":324,"icon":325},"Vite Nitro Plugin","/examples/vite-nitro-plugin","4.examples/vite-nitro-plugin","i-logos-vitejs",{"title":327,"path":328,"stem":329,"icon":330},"Vite RSC","/examples/vite-rsc","4.examples/vite-rsc","i-logos-react",{"title":332,"path":333,"stem":334,"icon":335},"Vite SSR HTML","/examples/vite-ssr-html","4.examples/vite-ssr-html","i-logos-html-5",{"title":337,"path":338,"stem":339,"icon":340},"SSR with Preact","/examples/vite-ssr-preact","4.examples/vite-ssr-preact","i-logos-preact",{"title":342,"path":343,"stem":344,"icon":330},"SSR with React","/examples/vite-ssr-react","4.examples/vite-ssr-react",{"title":346,"path":347,"stem":348,"icon":349},"SSR with SolidJS","/examples/vite-ssr-solid","4.examples/vite-ssr-solid","i-logos-solidjs-icon",{"title":351,"path":352,"stem":353,"icon":354},"SSR with TanStack Router","/examples/vite-ssr-tsr-react","4.examples/vite-ssr-tsr-react","i-simple-icons-tanstack",{"title":356,"path":357,"stem":358,"icon":354},"SSR with TanStack Start","/examples/vite-ssr-tss-react","4.examples/vite-ssr-tss-react",{"title":360,"path":361,"stem":362,"icon":363},"SSR with Vue Router","/examples/vite-ssr-vue-router","4.examples/vite-ssr-vue-router","i-logos-vue",{"title":365,"path":366,"stem":367,"icon":368},"Vite + tRPC","/examples/vite-trpc","4.examples/vite-trpc","i-simple-icons-trpc",{"title":370,"path":371,"stem":372,"icon":373},"WebSocket","/examples/websocket","4.examples/websocket","i-lucide-radio",{"title":375,"path":376,"stem":377,"children":378},"Blog","/blog","9.blog",[379,382],{"title":375,"path":376,"stem":380,"icon":381},"9.blog/index","i-lucide-file-text",{"title":383,"path":384,"stem":385,"icon":381},"Nitro v3 Beta is here!","/blog/v3-beta","9.blog/1.v3-beta",{"title":5,"path":387,"stem":388},"/","index",{"id":390,"title":96,"body":391,"description":722,"extension":723,"meta":724,"navigation":725,"path":97,"seo":726,"stem":98,"__hash__":727},"content/2.deploy/10.runtimes/1.node.md",{"type":392,"value":393,"toc":715,"icon":99},"minimark",[394,406,409,412,433,440,468,475,480,483,576,581,588,591,594,600,608,612,619,622,627,632,711],[395,396,397,401,402],"p",{},[398,399,400],"strong",{},"Preset:"," ",[403,404,405],"code",{},"node_server",[395,407,408],{},"Node.js is the default nitro output preset for production builds and Nitro has native Node.js runtime support.",[395,410,411],{},"Build project using nitro CLI:",[413,414,418],"pre",{"className":415,"code":416,"language":417,"meta":5,"style":5},"language-bash shiki shiki-themes github-light github-dark github-dark","nitro build\n","bash",[403,419,420],{"__ignoreMap":5},[421,422,425,429],"span",{"class":423,"line":424},"line",1,[421,426,428],{"class":427},"shcOC","nitro",[421,430,432],{"class":431},"sfrk1"," build\n",[395,434,435,436,439],{},"When running ",[403,437,438],{},"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:",[413,441,443],{"className":415,"code":442,"language":417,"meta":5,"style":5},"$ node .output/server/index.mjs\nListening on http://localhost:3000\n",[403,444,445,456],{"__ignoreMap":5},[421,446,447,450,453],{"class":423,"line":424},[421,448,449],{"class":427},"$",[421,451,452],{"class":431}," node",[421,454,455],{"class":431}," .output/server/index.mjs\n",[421,457,459,462,465],{"class":423,"line":458},2,[421,460,461],{"class":427},"Listening",[421,463,464],{"class":431}," on",[421,466,467],{"class":431}," http://localhost:3000\n",[395,469,470,471,474],{},"You can now deploy fully standalone ",[403,472,473],{},".output"," directory to the hosting of your choice.",[476,477,479],"h3",{"id":478},"environment-variables","Environment Variables",[395,481,482],{},"You can customize server behavior using following environment variables:",[484,485,486,501,509,515,525,542,551,561],"ul",{},[487,488,489,492,493,496,497,500],"li",{},[403,490,491],{},"NITRO_PORT"," or ",[403,494,495],{},"PORT"," (defaults to ",[403,498,499],{},"3000",")",[487,502,503,492,506],{},[403,504,505],{},"NITRO_HOST",[403,507,508],{},"HOST",[487,510,511,514],{},[403,512,513],{},"NITRO_UNIX_SOCKET"," - if provided (a path to the desired socket file) the service will be served over the provided UNIX socket.",[487,516,517,520,521,524],{},[403,518,519],{},"NITRO_SSL_CERT"," and ",[403,522,523],{},"NITRO_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.",[487,526,527,530,531,534,535,537,538,541],{},[403,528,529],{},"NITRO_SHUTDOWN_DISABLED"," - Disables the graceful shutdown feature when set to ",[403,532,533],{},"'true'",". If it's set to ",[403,536,533],{},", the graceful shutdown is bypassed to speed up the development process. Defaults to ",[403,539,540],{},"'false'",".",[487,543,544,547,548,541],{},[403,545,546],{},"NITRO_SHUTDOWN_SIGNALS"," - Allows you to specify which signals should be handled. Each signal should be separated with a space. Defaults to ",[403,549,550],{},"'SIGINT SIGTERM'",[487,552,553,556,557,560],{},[403,554,555],{},"NITRO_SHUTDOWN_TIMEOUT"," - Sets the amount of time (in milliseconds) before a forced shutdown occurs. Defaults to ",[403,558,559],{},"'30000'"," milliseconds.",[487,562,563,566,567,570,571,573,574,541],{},[403,564,565],{},"NITRO_SHUTDOWN_FORCE"," - When set to true, it triggers ",[403,568,569],{},"process.exit()"," at the end of the shutdown process. If it's set to ",[403,572,540],{},", the process will simply let the event loop clear. Defaults to ",[403,575,533],{},[577,578,580],"h2",{"id":579},"cluster-mode","Cluster mode",[395,582,583,401,585],{},[398,584,400],{},[403,586,587],{},"node_cluster",[395,589,590],{},"For more performance and leveraging multi-core handling, you can use cluster preset.",[476,592,479],{"id":593},"environment-variables-1",[395,595,596,597,599],{},"In addition to environment variables from the ",[403,598,405],{}," preset, you can customize behavior:",[484,601,602],{},[487,603,604,607],{},[403,605,606],{},"NITRO_CLUSTER_WORKERS",": Number of cluster workers (default is Number of available cpu cores)",[577,609,611],{"id":610},"handler-advanced","Handler (advanced)",[395,613,614,401,616],{},[398,615,400],{},[403,617,618],{},"node_middleware",[395,620,621],{},"Nitro also has a more low-level preset that directly exports a middleware usable for custom servers.",[395,623,435,624,626],{},[403,625,438],{}," with the Node middleware preset, the result will be an entry point exporting a middleware handler.",[395,628,629],{},[398,630,631],{},"Example:",[413,633,637],{"className":634,"code":635,"language":636,"meta":5,"style":5},"language-js shiki shiki-themes github-light github-dark github-dark","import { createServer } from 'node:http'\nimport { listener } from './.output/server'\n\nconst server = createServer(listener)\nserver.listen(8080)\n","js",[403,638,639,655,667,674,693],{"__ignoreMap":5},[421,640,641,645,649,652],{"class":423,"line":424},[421,642,644],{"class":643},"so5gQ","import",[421,646,648],{"class":647},"slsVL"," { createServer } ",[421,650,651],{"class":643},"from",[421,653,654],{"class":431}," 'node:http'\n",[421,656,657,659,662,664],{"class":423,"line":458},[421,658,644],{"class":643},[421,660,661],{"class":647}," { listener } ",[421,663,651],{"class":643},[421,665,666],{"class":431}," './.output/server'\n",[421,668,670],{"class":423,"line":669},3,[421,671,673],{"emptyLinePlaceholder":672},true,"\n",[421,675,677,680,684,687,690],{"class":423,"line":676},4,[421,678,679],{"class":643},"const",[421,681,683],{"class":682},"suiK_"," server",[421,685,686],{"class":643}," =",[421,688,689],{"class":427}," createServer",[421,691,692],{"class":647},"(listener)\n",[421,694,696,699,702,705,708],{"class":423,"line":695},5,[421,697,698],{"class":647},"server.",[421,700,701],{"class":427},"listen",[421,703,704],{"class":647},"(",[421,706,707],{"class":682},"8080",[421,709,710],{"class":647},")\n",[712,713,714],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}",{"title":5,"searchDepth":458,"depth":458,"links":716},[717,718,721],{"id":478,"depth":669,"text":479},{"id":579,"depth":458,"text":580,"children":719},[720],{"id":593,"depth":669,"text":479},{"id":610,"depth":458,"text":611},"Run Nitro apps with Node.js runtime.","md",{"icon":99},{"icon":99},{"title":96,"description":722},"K3ji-zZjPvPAEJHgpZeh930Eb-LxyouMR6HAdK4blNk",[729,731],{"title":84,"path":85,"stem":86,"description":730,"icon":89,"children":-1},"Learn more about Nitro deploy providers.",{"title":101,"path":102,"stem":103,"description":732,"icon":104,"children":-1},"Run Nitro apps with Bun runtime.",1775150109521]