tRPCttRPC
Powered by
goetzrobinG
tRPC•3y ago•
5 replies
goetzrobin

Nitro and tRPC in vercel-edge

Hey there! I hope this is the right place to ask for help.
I am trying to deploy an application with Nitro and tRPC with the vercel-edge preset.
I am getting a weird proxy error when I deploy it without making any changes to how tRPC is handled.

TypeError: 'getOwnPropertyDescriptor' on proxy: trap reported non-configurability for property 'setTimeout' which is either non-existent or configurable in the proxy target
    at (index.mjs:1:1261145)
    at (index.mjs:1:1270611)
    at (index.mjs:1:1272087)
    at (index.mjs:1:1246628)
    at (index.mjs:1:1271597)
    at (index.mjs:1:1273439)
    at (__nitro:middleware.js:1:17)
TypeError: 'getOwnPropertyDescriptor' on proxy: trap reported non-configurability for property 'setTimeout' which is either non-existent or configurable in the proxy target
    at (index.mjs:1:1261145)
    at (index.mjs:1:1270611)
    at (index.mjs:1:1272087)
    at (index.mjs:1:1246628)
    at (index.mjs:1:1271597)
    at (index.mjs:1:1273439)
    at (__nitro:middleware.js:1:17)


I think I need to use the
fetchRequestHanlder
fetchRequestHanlder
as described in the tRPC documentation for
Fetch / Edge Runtimes
Fetch / Edge Runtimes
https://trpc.io/docs/server/adapters/fetch
They provide examples for Next.js, Remix, and SoldStart, but not Nuxt/Nitro.
Nitro uses
IncommingMessage
IncommingMessage
and
ServerResponse
ServerResponse
, while the
fetchRequestHandler
fetchRequestHandler
expects a
Request
Request
and returns a
Response
Response
.

My initial, naive approach was to simply map back and forth between the two using these utilities I found for astro: https://github.com/withastro/astro/blob/2dca81bf2174cd5c27cb63cb0ae081ea2a1ac771/packages/integrations/vercel/src/serverless/request-transform.ts#L2

But again I am getting errors that seem to stem from Nitro using
node-fetch
node-fetch
under the hood? I am not experienced enough with the edge runtime or nitro to completely understand why it would not work and what needs to happen to make tRPC and Nitro on edge work together.

If anyone has any pointers or if anyone has a repo of a Nuxt/Nitro project that uses tRPC on the edge that would be awesome!

Thanks already for your help!
Fetch / Edge Runtimes Adapter | tRPC
You can create a tRPC server within any edge runtime that follow the WinterCG, specifically the Minimum Common Web Platform API specification.
Fetch / Edge Runtimes Adapter | tRPC
GitHub
astro/request-transform.ts at 2dca81bf2174cd5c27cb63cb0ae081ea2a1ac...
The all-in-one web framework designed for speed. ⭐️ Star to support our work! - astro/request-transform.ts at 2dca81bf2174cd5c27cb63cb0ae081ea2a1ac771 · withastro/astro
astro/request-transform.ts at 2dca81bf2174cd5c27cb63cb0ae081ea2a1ac...
tRPCJoin
Move Fast & Break Nothing. End-to-end typesafe APIs made easy.
5,015Members
Resources
Was this page helpful?

Similar Threads

Recent Announcements

Similar Threads

Does tRPC work with Clerk and Vercel Edge functions?
XenoXXeno / ❓-help
3y ago
tRPC caching vs Vercel dynamic edge caching
VengeanceVVengeance / ❓-help
4y ago
Using proxyClient in vercel edge function
kaancanKkaancan / ❓-help
3y ago