-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
500
responses when including body
payload in any request using @hono/node-server/vercel
#84
Comments
Update: seems that this line in particular is the one causing the error. If I comment it out, the request goes through without errors. |
+1 |
Hi! I started working on fixing this isse, but when I deploy, I get the following error. Are you getting the same error? Error: Cannot find module '/var/task/node_modules/hono/dist/index.js' imported from /var/task/api/index.js
Did you mean to import hono/dist/cjs/index.js?
at new NodeError (node:internal/errors:405:5)
at finalizeResolution (node:internal/modules/esm/resolve:329:11)
at moduleResolve (node:internal/modules/esm/resolve:992:10)
at moduleResolveWithNodePath (node:internal/modules/esm/resolve:936:12)
at defaultResolve (node:internal/modules/esm/resolve:1178:79)
at nextResolve (node:internal/modules/esm/loader:163:28)
at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
at link (node:internal/modules/esm/module_job:76:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
Error: Runtime exited with error: exit status 1
Runtime.ExitError The project is the same as @alexiglesias93 's . |
@yusukebe I had the same error, I'll try to replicate it here because I forgot the reason. I'll get back to you soon. I think it was an issue with the tsconfig file; I'll check. |
Remove
I don't know what the right configuration for tsconfig is, but this one is working correctly. |
Seems weird though, I've never had any issues using |
@ErickLuis00 Thanks, I'll try it later. @alexiglesias93 It's weird. When I run it with the edge runtime using the Hono starter, it succeeds, but when I try to run it with Node.js, I get an error. Anyway, I'll try again. |
I'll try to reproduce the issue too. |
@alexiglesias93 Only when deploying. |
The main issue, the error occurs when the body doesn't include a payload, is the incoming message stream is closed when it comes to the Node.js Adapter. I think this is specific to the Vercel environment and we are looking for a workaround. |
I've been able to reproduce the |
Hmm, maybe Vercel changed something in the environment. I'll try again tomorrow. |
Thank you for taking the time to look at this! 🙏🏻 |
Hmmm. I'm still getting errors in the Vercel environment. As noted here honojs/hono#1256, I think we can get it working with a custom build, but I want to use Verbal CLI, you too right? But maybe not. Hmm. |
Yeah,, ideally we'd be able to use Vercel's CLI to get the same experience as when working with edge functions 🤔 |
If you are able I would like you to do that! |
@yusukebe seems like the errors magically disappeared? I didn't update any package. Current versions in my repro are: "dependencies": {
"@hono/node-server": "^1.2.0",
"hono": "^3.6.0"
},
"devDependencies": {
"vercel": "^32.2.5"
} I've been inspecting and maybe this issue is related to it? vercel/vercel#10564 |
Ah, yes! the errors are gone, and it works with POST requests including a body! This might be a Vercel issue. Though, in the |
Yes, I also am getting the error when using Interestingly, I tried adding the NODEJS_HELPERS=0 environment variable like suggested here and now it seems to work fine when using both |
Ah, I think so! Since the error is caused by the body being used before it reaches the Hono app handler. Can you able to disable the helper locally? |
Yes, we can select what environments a variable must be added to: I'm curious to know why is it only needed in Development (local) but not in Production (deployed)? Should we add it everywhere just to be safe or is it better to only have it in Development? |
Woooow, it works well! Thanks!
I don't know, but I think we should add it everywhere. |
Great, then I guess we can close this issue? I'll re-open it if something starts failing again. |
I am using Hono in a Next.js API Route. There I got the same behavior: silently failing Hono on POST requests. Configuring the API Route to avoid body parsing helped. export const config = {
api: {
bodyParser: false,
},
}; |
the problem is probably caused by consuming the Request stream twice. I'm using And I found another interesting thing is I comment this line and It worked, no error report now. So, the final solution for this issue is just add |
Should this be mentioned in the docs? |
I've investigated the issue with running The issue can be resolved by setting the following environment variable in your local environment file:
|
See honojs/node-server#84 Based on manual testing, this only affects the Node js runtime on the pages router: the app router as a whole and edge API routes in the pages router are unaffected.
* add typescript type to next api route `config` object * disable bodyParser in next api route when running on node js See honojs/node-server#84 Based on manual testing, this only affects the Node js runtime on the pages router: the app router as a whole and edge API routes in the pages router are unaffected.
@cogoo what is the kind of framework you chose while publishing the app on Vercel ? |
We use Hono, a lightweight app framework. For deploying on Vercel, we wrap the import { Hono } from 'hono';
import { handle } from '@hono/node-server/vercel';
//.. some other code
const app = new Hono().basePath('/api');
export default handle(app); |
@cogoo I did the same thing. How do you then have the middleware working with each route having its own function ? |
@prashantchothani do you want to create a question on stackoverflow and send me a link, I'll be happy to help. |
Ok will do that. Appreciate your help. |
@cogoo Please find the stackoverflow link below. I took time to post this because I wanted to test everything that I could to fix it myself but it didn't work: https://stackoverflow.com/questions/78733581/honojs-with-vercel-middleware-for-backend-api |
Whenever we include a payload to a request using
@hono/node-server/vercel
, Hono silently fails and just returns a500
response.Here's a minimal repro:
https://github.com/alexiglesias93/hono-vercel-bug/blob/master/api/index.ts
Deployed:
https://hono-vercel-bug.vercel.app/api
NodeJS version in Vercel: 18.x
NodeJS version in local: 18.16.1
Error happens in both Vercel and local (using
vercel dev
).I've been able to pinpoint the issue to these lines in
listener.ts
, after adding a console log in thecatch
statement I was able to find out that Vercel is failing with this error:I also tried to update
vercel
from29.4.0
to32.2.5
but still getting a similar error.Update: seems that this line in particular is the one causing the error. If I comment it out, the request goes through without errors.
Any thoughts? This is quite a blocker to implement Hono in Vercel☹️
Let me know if I can do anything to help!
The text was updated successfully, but these errors were encountered: