1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00

Add Fetch Does Not Work In API Serverless Function as a Next.js TIL

This commit is contained in:
jbranchaud
2024-03-15 15:02:27 -05:00
parent 74a3dd3c3a
commit b6e5ea4c03
2 changed files with 26 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
# Fetch Does Not Work In API Serverless Function
Next.js ships with [its own implementation of
`fetch`](https://nextjs.org/docs/app/api-reference/functions/fetch) that
extends the [native `fetch`
API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
I ran into a bug recently that was only reproducible in production. I had a
Next.js API function that was `POST`ing to another API endpoint using `fetch`.
I tested it several ways in development. It worked great. However, once the
feature was in production, it was silently failing. After some `console.log`
debugging, I discovered that the target API was getting an empty `body` in the
`POST` request.
I don't know the specifics of why, but somehow the `fetch` implementation
running in the Vercel serverless function environment apparently strips out the
`body` of a POST request.
The solution, for me, was to add the
[`node-fetch`](https://github.com/node-fetch/node-fetch) package and import
that version of fetch in my API function. Once I made that change, my feature
was working again.
[source](https://github.com/vercel/vercel/discussions/4971)