Развёртывание: Node.js, Bun, Deno, Cloudflare Workers
Развёртывание — запуск приложения на сервере, где его видят пользователи. Код маршрутов Hono одинаков на всех платформах, различается только точка входа и команды. Но совместимы не все пакеты: better-sqlite3 и process.env есть не везде.
Node.js
На своём сервере или VPS приложение собирают и запускают обычным Node.js:
npm ci
npm run build
npm startnpm ci ставит пакеты точно по package-lock.json, npm run build компилирует TypeScript в dist/, npm start запускает dist/index.js. Файл .env с настоящими секретами создают прямо на сервере. Чтобы приложение перезапускалось после сбоя и перезагрузки, его запускают через менеджер процессов, например systemd или pm2, а перед ним ставят nginx с HTTPS.
Bun
Bun сам запускает TypeScript и имеет встроенный сервер. Вместо serve() из @hono/node-server точка входа экспортирует приложение:
// src/index.ts
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Привет из Bun'))
export default appbun run src/index.tsBun увидит объект с методом fetch и запустит сервер на порту 3000. Вместо better-sqlite3 в Bun обычно используют встроенный модуль bun:sqlite с похожими методами.
Deno
В Deno Hono подключают из реестра JSR, а сервер запускает встроенная функция:
// main.ts
import { Hono } from 'jsr:@hono/hono'
const app = new Hono()
app.get('/', (c) => c.text('Привет из Deno'))
Deno.serve(app.fetch)deno run --allow-net main.tsФлаг --allow-net разрешает программе работать с сетью: без явных разрешений Deno не даёт доступа к сети и файлам.
Cloudflare Workers
Workers — платформа, где код выполняется на серверах Cloudflare по всему миру. Проект создают отдельным шаблоном cloudflare-workers, точка входа тоже экспортирует приложение (export default app). Команды:
npm run dev
npm run deployПервая запускает локальную копию через инструмент Wrangler, вторая публикует воркер. На Workers нет файловой системы, поэтому SQLite из файла не подойдёт: базу заменяют на D1, а переменные и секреты приходят в c.env.
Что меняется при переезде
| Часть кода | Node.js | Bun | Deno | Workers |
|---|---|---|---|---|
| запуск | serve() | export default app | Deno.serve() | export default app |
| переменные | process.env | process.env | Deno.env | c.env |
| SQLite | better-sqlite3 | bun:sqlite | пакет из JSR или npm | D1 |
Функция env(c) из hono/adapter работает везде, поэтому маршруты, которые используют её, переносятся без изменений.
Частая ошибка
На сервере запускают npm run dev. Эта команда для разработки: она следит за файлами и компилирует TypeScript на лету, тратя память и время. В рабочем режиме собирайте проект через npm run build и запускайте npm start.