trpc doesn't work after migrating to next 15
When i upgraded to Next 15 (pages router), all trpc routes fails with status 500 on production. The result message is
{"error":{"json":{"message":"req.socket.once is not a function","code":-32603,"data":{"code":"INTERNAL_SERVER_ERROR","httpStatus":500}}}}
. I don't really understand if it's TRPC issue, Next issue or even Netlify issue (i host my website there, but they declare to support Next 15). Does anybody have an idea where the problem could be? I don't call req.socket.once
anywhere in my code, so the issue is probably with one of those places8 Replies
btw, the issue is only with
[trpc].ts
routes; the ones that uses SSR with getServerSideProps
works fine. and it also works fine locally, it fails only in prod (aws lambdas backed by netlify)can you share the content of the
/pages/api/[trpc].ts
-file?
is it only on prod or in development as well?
is it the same when you run npm build && npm start
locally?
i just bumped next
on our monorepo and it works fine
this is the file for reference https://github.com/trpc/trpc/blob/next/examples/next-prisma-starter/src/pages/api/trpc/%5Btrpc%5D.ts
you can see the deployment here@Alex / KATT ๐ฑ
it works locally both with dev/prod build (both
yarn next dev
and yarn next build && yarn next start
) , the issue happens only when i deploy to netlify
btw it's trpc 11.0.0-rc.666 and next 15.1.2 if it's anyhow could help@Alex / KATT ๐ฑ it seems like i narrowed down the issue to the exact file and commit ๐ The change was introduced in this commit/line: https://github.com/trpc/trpc/commit/87fde62978441b1cedd1d5cf7290f6ade9a92607#diff-981f2f06bfbbee188e14a4f7991f370e9042eb5c21995e24e183ab76acc5ce01R136 and then here https://github.com/trpc/trpc/commit/3df8b21beb4925cf73194fc776d1a88603a3c420#diff-981f2f06bfbbee188e14a4f7991f370e9042eb5c21995e24e183ab76acc5ce01L136
req.socket
exists locally with node, but it seems like it doesn't exist in lambdas environment (next adapter with netlify backed by aws). so, it fails on this line. In this env, request object is an instance of ComputeJsIncomingMessage
class - I don't really know if it comes from next itself, or from lambdas, it's what i've seen when i put console.log
in trpc code using yarn patch
. It looks like this issue has nothing to do with nextjs upgrade, but with the fact i didn't pin exact trpc version but used "@trpc/server": "next"
, and it was unintentionally upgraded together with nextjs. As a temporary workaround i reverted it back to a version before this change was introduced (11.0.0-rc.608), and now everything works finecould you create an issue on github with the above?
https://github.com/trpc/trpc/issues/6341 - however it's mostly just a copy-paste of the discussion above, i don't have an isolated project where issue can be reproduced ๐ฆ
GitHub
bug: trpc fails on nextjs API route, deloyed on AWS lambda, backed ...
Provide environment information System: OS: Linux 6.8 Ubuntu 22.04.5 LTS 22.04.5 LTS (Jammy Jellyfish) CPU: (16) x64 AMD Ryzen 7 5800X 8-Core Processor Memory: 16.91 GB / 31.24 GB Container: Yes Sh...
should be fixed now! thanks for reporting!
thank you! โค๏ธ