Adapters
Node.js
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.
Usage
First, create an h3 app:
app.mjs
import { createApp, defineEventHandler } from "h3";
export const app = createApp();
app.use(defineEventHandler(() => "Hello world!"));
Create Node.js server entry:
server.mjs
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:
terminal
node ./server.mjs
Using listhen
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
WebSocket support
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);