RPC type error - Unable to interop
Repro repo: https://codeberg.org/Dreamboat9222/ioMonorepo-Edgedb-Hono-Svelte
In a monorepo, I have hono api in one package, and the ui (Svelte) in another and use EdgeDB as the database. It was working a couple of days ago, but I lost all intellisense abilities for 4 days so I was basically coding inside notepad 😂 (The issue is now fixed), but since then this stopped working. I also posted on the edgedb server, but I didn't receive any reply yet.
Posting here in case someone have an idea on what is going wrong.
Inside hono if I remove the database from context the error disappear:
In svelte I import this to make API queries:
But for some reason, when I try to load the UI, it throws
Unable to interop
export * from "edgedb/dist/reflection/index.js" in ...Monorepo/dbschema/edgeql-js/reflection.mts, this may lose module exports. Please export "edgedb/dist/reflection/index.js" as ESM or use named exports instead, e.g.
export { A, B } from "edgedb/dist/reflection/index.js"
Removing
import { type AppRouter } from "@repo/api-hono" and the type next to hc removes the error, but then I lose all types for my API calls.
Edgedb types are generated with
bunx @edgedb/generate edgeql-js --target esm (I tried mts too, same error)
Inside the browser, the following error appear:
TypeError: $.StrictMap is not a constructor`
- I removed all node_modules folders and reinstalled the deps
- I removed dbschema/edgeql-js and regenerated the types
- I double-checked tsconfig files but didn't spot anything, but I'm no specialist.
Any idea please ? 😰2 Replies
EdgeDB dev confirmed that, for some reason now, hono exports server-only code related to the database and that code gets imported client-side with RPC.
Yup, Hono's side of things.
I've updated the repo with a simpler version that doesnt rely on @repo/edgedb and multiple imports but the error persist no matter what.
Everything points to Hono, as soon as
import { type AppRouter } from "@repo/api-hono"
is present in Svelte ui, the error appears.
But this is kind of required to make use of RPC 😂
Someone over at edgedb suggested removing the context and calling the database directly inside a route, but the issue persist.
I think it's either how edge e
returns type, or how hono infer types for RPC
Git link updatedGitHub
RPC tries to import server-side database code into the client and m...
What version of Hono are you using? 4.6.3 What runtime/platform is your app running on? Bun 1.1.29 What steps can reproduce the bug? Use EdgeDB Use Hono RPC and export routes types What is the expe...