Node.js

使用 Node.js runtime 运行 Nitro 应用。

Preset: node_server

Node.js 是生产构建的默认 nitro 输出 preset,Nitro 具有原生 Node.js runtime 支持。

使用 nitro CLI 构建项目:

nitro build

使用 Node server preset 运行 nitro build 时,结果将是一个启动即用型 Node 服务器的入口点。尝试输出:

$ node .output/server/index.mjs
Listening on http://localhost:3000

你现在可以将完全独立的 .output 目录部署到你选择的托管平台。

环境变量

你可以使用以下环境变量自定义服务器行为:

  • NITRO_PORTPORT(默认为 3000
  • NITRO_HOSTHOST
  • NITRO_UNIX_SOCKET - 如果提供(所需套接字文件的路径),服务将通过提供的 UNIX 套接字提供服务。
  • NITRO_SSL_CERTNITRO_SSL_KEY - 如果两者都存在,这将以 HTTPS 模式启动服务器。在绝大多数情况下,除了测试外不应使用此功能,Nitro 服务器应运行在像 nginx 或 Cloudflare 这样的反向代理后面,它们终止 SSL。
  • NITRO_SHUTDOWN_DISABLED - 设置为 'true' 时禁用优雅关闭功能。如果设置为 'true',则绕过优雅关闭以加快开发过程。默认为 'false'
  • NITRO_SHUTDOWN_SIGNALS - 允许你指定应处理哪些信号。每个信号应使用空格分隔。默认为 'SIGINT SIGTERM'
  • NITRO_SHUTDOWN_TIMEOUT - 设置强制关闭发生之前的时间量(以毫秒为单位)。默认为 '30000' 毫秒。
  • NITRO_SHUTDOWN_FORCE - 设置为 true 时,在关闭过程结束时触发 process.exit()。如果设置为 'false',进程将仅让事件循环清除。默认为 'true'

集群模式

Preset: node_cluster

为了获得更高的性能并利用多核处理,你可以使用集群 preset。

环境变量

除了来自 node_server preset 的环境变量外,你还可以自定义行为:

  • NITRO_CLUSTER_WORKERS:集群工作进程数(默认为可用 CPU 核心数)

处理器(高级)

Preset: node

Nitro 还有一个更底层的 preset,它直接导出一个具有 (req, res) => {} 签名的函数,可用于中间件和自定义服务器。

使用 Node preset 运行 nitro build 时,结果将是一个导出具有 (req, res) => {} 签名函数的入口点。

示例:

import { createServer } from 'node:http'
import { listener } from './.output/server'

const server = createServer(listener)
server.listen(8080)