Node.js
Node.js is an open-source, cross-platform JavaScript runtime environment.
Hono is not designed for Node.js at first. But with a Node.js Adapter it can run on Node.js as well.
WARNING
It works on Node.js versions greater than 18.x. The specific required Node.js versions are as follows:
- 18.x => 18.14.1+
- 19.x => 19.7.0+
- 20.x => 20.0.0+
Essentially, you can simply use the latest version of each major release.
1. Setup
A starter for Node.js is available. Start your project with "create-hono" command.
npm create hono@latest my-app
npm create hono@latest my-app
Move to my-app
and install the dependencies.
cd my-app
npm i
cd my-app
npm i
2. Hello World
Edit src/index.ts
:
import { serve } from '@hono/node-server'
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Node.js!'))
serve(app)
import { serve } from '@hono/node-server'
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Node.js!'))
serve(app)
3. Run
Run the development server locally. Then, access http://localhost:3000
in your Web browser.
npm run start
npm run start
Change port number
You can specify the port number with the port
option.
serve({
fetch: app.fetch,
port: 8787,
})
serve({
fetch: app.fetch,
port: 8787,
})
Serve static files
You can use serveStatic
to serve static files from the local file system.
import { serveStatic } from '@hono/node-server/serve-static'
app.use('/static/*', serveStatic({ root: './' }))
import { serveStatic } from '@hono/node-server/serve-static'
app.use('/static/*', serveStatic({ root: './' }))
rewriteRequestPath
If you want to map http://localhost:3000/static/*
to ./statics
, you can use the rewriteRequestPath
option:
app.get(
'/static/*',
serveStatic({
root: './',
rewriteRequestPath: (path) => path.replace(/^\/static/, '/statics'),
})
)
app.get(
'/static/*',
serveStatic({
root: './',
rewriteRequestPath: (path) => path.replace(/^\/static/, '/statics'),
})
)