docs/3.adapters/1.node.md
Natively run h3 servers with Node.js.
In order to start h3 apps in Node.js, use toNodeListener adapter to convert h3 app into a Node.js requestListener.
First, create an h3 app:
import { createApp, defineEventHandler } from "h3";
export const app = createApp();
app.use(defineEventHandler(() => "Hello world!"));
Create Node.js server entry:
import { createServer } from "node:http";
import { toNodeListener } from "h3";
import { app } from "./app.mjs";
createServer(toNodeListener(app)).listen(process.env.PORT || 3000);
Now, you can run you h3 app natively with Node.js:
node ./server.mjs
Alternatively, you can use unjs/listhen. In this method, you only need to make app.mjs with a default or app export.
Run this command to run your servers:
npx --yes listhen ./app.ts
:read-more{to="https://crossws.unjs.io/adapters/node"}
[!TIP] When using listhen method, websocket is supported out of the box!
import wsAdapter from "crossws/adapters/node";
const { handleUpgrade } = wsAdapter(app.websocket);
server.on("upgrade", handleUpgrade);