先日のEcho-Echo開発の中で、@hono/openapi を使うのがどうにもうまくいかないと書いた。
これが解決したので、注意点としてのメモ。
参考
- github - honojs/hono - hono/zod-openapi + RPC not working
- github - Octo8080X/inspect-fresh-hono-openapi-rpc
- github - nakasyou/hono-openapi-deno
- github - denoland/deno - Is there a problem with nodeModulesDir in deno.json
経緯
今回、Echo-Echoの開発での @hono/openapi の動作でうまくいかなくて・・・と書いたら、yusuke Wadaさんからリプライが付いていた。
ありがたいお話で、結局自分ではどうにもならなくて、Issueを出させてもらった。
Issue でのやり取りで、わかったことをまとめたい。
Hono を Deno で使うとき気をつけること
気を付けるのは、deno.land/x/hono と、npm:@hono/zod-openapi を混ぜない。
自分の実装で動かなかったポイントの1つは混ぜてしまったことだった。
1 | { |
1 | { |
この使い方をすると問題ありだった。
Deno で、npm: が使えるので、こちらで寄せてしまうのが良いだろう。
deno.land/x には @hono/zod-openapi も公開されてもいないし。(サードパーティ系は数多く公開されているけれども)
もう1つの問題
deno.json に nodeModulesDir という設定項目がある。
これを入れると、型の参照が崩れた。
1 | { |
これが入ると、.openapi
メソッドが無い型と認識されてしまいエラーになる。
1 | import { z } from 'npm:@hono/zod-openapi' |
nodeModulesDir
を消すか、falseに設定すると問題が解決した。
この事象は既に hono には関係ないもので、DenoCLI(もしくは Deno language server)の問題だろうという判断がついていて、Issueを立てた。
Is there a problem with nodeModulesDir in deno.json
既に、問題の原因の目算が付いたようで近々に修正されるでしょう。
hono、平日昼間にIssueが処理されて、とてもIssueを出した側としてありがたいものでした。
活動が活発なのがよくわかるものでした。
では。