🍂

HonoをGlitchのNode.js 14で動かす

2022/10/01に公開

https://github.com/honojs/node-server

@hono/node-serverのv0.0.1が公開された頃からGlitchで動かす機会が何回かあったのですが毎回コピペせずに書き換えるのも面倒なのでコピペ用に投稿しておきます。

https://github.com/honojs/node-server/blob/v0.0.2/package.json

今回はHono v2.2.1と@hono/node-serverのv0.1.0を動かします。
今回はHono v2.1.4と@hono/node-serverのv0.0.2を動かします。

https://github.com/honojs/node-server/blob/v0.0.2/tsconfig.json

TargetがES2020、ModuleがCommonJSなのでNode.js 14のrequireでパッケージを呼び出せそうです。

https://github.com/remix-run/web-std-io

ただ現在@hono/node-serverの依存関係にあるパッケージ@remix-run/web-fetch, @remix-run/web-file, remix-run/web-streamはtsconfig.jsonテンプレそのままだったのでTargetがESNextでした。
GitHub ActionsのテストでNode.js 14使っているみたいなのでまあ多分大丈夫でしょう。

https://glitch.com/

これがGlitchです。

https://glitch.com/edit/#!/remix/glitch-hello-node

Hello Nodeからスタートします。
Fastifyを使ったテンプレートですが、とりあえずpackage.jsonとserver.jsを書き換えればHonoで動かせるようになるのでまずはpackage.jsonを書き換えます。

{
  "name": "glitch-hello-node",
  "version": "0.1.0",
  "description": "A simple Node app built on hono, instantly up and running. Built to be remixed on Glitch.com.",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "hono": "2.1.4",
    "@hono/node-server": "0.0.2"
  },
  "engines": {
    "node": "14.x"
  },
  "repository": {
    "url": "https://glitch.com/edit/#!/glitch-hello-node"
  },
  "license": "MIT",
  "keywords": [
    "node",
    "glitch",
    "hono"
  ]
}

package.jsonはこんな感じに。

--- package-fastify.json	2022-10-01 02:47:30.092976286 +0000
+++ package-hono.json	2022-10-01 02:47:35.184971767 +0000
@@ -1,17 +1,14 @@
 {
   "name": "glitch-hello-node",
   "version": "0.1.0",
-  "description": "A simple Node app built on fastify, instantly up and running. Built to be remixed on Glitch.com.",
+  "description": "A simple Node app built on hono, instantly up and running. Built to be remixed on Glitch.com.",
   "main": "server.js",
   "scripts": {
     "start": "node server.js"
   },
   "dependencies": {
-    "fastify": "^4.4.0",
-    "handlebars": "^4.7.7",
-    "@fastify/formbody": "^7.0.1",
-    "@fastify/static": "^6.5.0",
-    "@fastify/view": "^7.1.0"
+    "hono": "2.1.4",
+    "@hono/node-server": "0.0.2"
   },
   "engines": {
     "node": "14.x"
@@ -23,6 +20,6 @@
   "keywords": [
     "node",
     "glitch",
-    "express"
+    "hono"
   ]
 }

Diffを出力するとこんな感じ。

const { serve } = require("@hono/node-server");
const { Hono } = require("hono");

const app = new Hono();
app.get("/", (c) => c.text("Hello, World!"));

serve(app);

server.jsはこんな感じになりました。
あとはPreviewかブラウザタブを開き直せば自動的にパッケージがインストールされHonoが動きます。


追記

https://github.com/honojs/hono/commit/719ce857ec589c29532c6aa19898952bc488ade0

Hono v2.2.0からHono本体がNode.js 16以上を指定するようになったことを投稿してから知り、タイトルを変更することも難しいのでHonoのバージョンを下げることにしました。
タイトルとは異なりますがGlitchではpackage.jsonの"node": "14.x""node": "16.x"にすればNode.js 16にできるので最新のHonoをWARNなく動かしたい場合は以下のpackage.jsonをコピペしてください。

{
  "name": "glitch-hello-node",
  "version": "0.1.0",
  "description": "A simple Node app built on hono, instantly up and running. Built to be remixed on Glitch.com.",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "hono": "^2.2.1",
    "@hono/node-server": "^0.1.0"
  },
  "engines": {
    "node": "16.x"
  },
  "repository": {
    "url": "https://glitch.com/edit/#!/glitch-hello-node"
  },
  "license": "MIT",
  "keywords": [
    "node",
    "glitch",
    "hono"
  ]
}

わーん。

Discussion