Comments (26)
Facing same issue in my project using nextjs 14.
from next.js.
- We are getting these issues in server-rendered pages. We are fetching apis and creating pages during build.
- Same apis are working in browser during runtime.
- I am randomly getting this issue; not every time. Once issue occurs, for rest of the day, it behaves same. But next day again it starts working.
Node: 18.17.1
Nextjs: 14.2.3
from next.js.
I am also getting a bunch of undici errors as well recently. These are the 3 main ones
"next": "^14.2.3",
node v20.9.0
I also tried setting vercel env variable: NODE_OPTIONS=--dns-result-order=ipv4first but it has not solved the issue
`TypeError: fetch failed
at node:internal/deps/undici/undici:12618:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
cause: Error: connect ETIMEDOUT 76.76.21.241:443
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16)
at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:128:17) {
errno: -110,
code: 'ETIMEDOUT',
syscall: 'connect',
address: '76.76.21.241',
port: 443
}`
`TypeError: fetch failed
at node:internal/deps/undici/undici:12618:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
cause: ConnectTimeoutError: Connect Timeout Error
at onConnectTimeout (node:internal/deps/undici/undici:7760:28)
at node:internal/deps/undici/undici:7716:50
at Immediate._onImmediate (node:internal/deps/undici/undici:7748:13)
at process.processImmediate (node:internal/timers:476:21)
at process.callbackTrampoline (node:internal/async_hooks:128:17) {
code: 'UND_ERR_CONNECT_TIMEOUT'
}
}`
`TypeError: fetch failed
at node:internal/deps/undici/undici:12618:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
cause: [Error: C0AFB780CE7F0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:ssl/record/ssl3_record.c:355:
] {
library: 'SSL routines',
reason: 'wrong version number',
code: 'ERR_SSL_WRONG_VERSION_NUMBER'
}
}`
from next.js.
I successfully resolved the issue by configuring the undici global dispatcher in the root layout.
from next.js.
Thanks. So what can I do in order to eliminate this issue?
@ornakash, I just included NODE_OPTIONS=--dns-result-order=ipv4first
in Vercel's environment variables for our project, and everything works fine.
Note that setting --dns-result-order=ipv4first
prioritizes IPv4 addresses over IPv6 addresses but does not disregard IPv6 addresses entirely. Both IPv4 and IPv6 addresses are still resolved and included in the results, but IPv4 addresses appear first in the list. This configuration can be useful when you prefer IPv4 connectivity but still want to support IPv6.
from next.js.
@andremendonca03 See #57384 (comment)
from next.js.
Facing the same problem with Nextjs 14.2.3 and node 20 under comporate http_proxy network. In build time, Nextjs is trying to fetch some cloudflare addresses
[cause]: ConnectTimeoutError: Connect Timeout Error (attempted addresses: 104.16.24.34:443, 104.16.28.34:443, 104.16.26.34:443, 104.16.2.35:443, 104.16.0.35:443, 104.16.27.34:443, 104.16.31.34:443, 104.16.1.35:443, 104.16.30.34:443, 104.16.25.34:443, 104.16.29.34:443, 104.16.3.35:443)
from next.js.
Same problem here. All day yesterday, we were getting UND_ERR_CONNECT_TIMEOUT errors only on Vercel's production build attempts. It was working when built locally. We're still on Next13.
However, at 4:30 am, I tried to build it again in production, and everything worked fine.
This is weird. We may still encounter this issue in future builds. Hoping for someone to find a fix for this. I'll also continue to observe.
Err log:
ERROR FETCH ITEMPAGE GETSTATICPATHS: TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11731:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async getStaticPaths (/vercel/path0/.next/server/pages/used-cars/[slug]/[itemPage].js:1471:26)
at async buildStaticPaths (/vercel/path0/node_modules/next/dist/build/utils.js:598:33)
at async /vercel/path0/node_modules/next/dist/build/utils.js:933:115
at async Span.traceAsyncFn
(/vercel/path0/node_modules/next/dist/trace/trace.js:79:20) {
cause: ConnectTimeoutError: Connect Timeout Error
at onConnectTimeout (node:internal/deps/undici/undici:6869:28)
at node:internal/deps/undici/undici:6825:50
at Immediate._onImmediate (node:internal/deps/undici/undici:6857:13)
at process.processImmediate (node:internal/timers:476:21) {
code: 'UND_ERR_CONNECT_TIMEOUT'
}
}
from next.js.
Alright, this suggestion nodejs/undici#1531 (comment) might be the fix for UND_ERR_CONNECT_TIMEOUT error. After some additional research and debugging, I tried using dns.lookup()
, dns.resolve4()
, and dns.resolve6()
to determine which family (IPv4 or IPv6) the DNS I am accessing supports. It turns out that it supports IPv4.
from next.js.
This is most likely an Undici error.
Can you try to collect more data about the endpoints that are failing?
from next.js.
Hey @icyJoseph I only have these 2 APIs mentioned to test at the moment.
Haven't Undici been removed from next14?
from next.js.
Hi, well, it's not a Next.js thing, rather Node.js' fetch implementation uses undici at its core.
For a world pre- Node 18 (17 really) Next js did a polyfill with node-fetch, to provide server side fetch, but since Node.js adopted fetch natively, Next.js just doesn't have to anymore.
from next.js.
Maybe you can do an experiment. Does it also fail, if you create a node script, or just open the Node repl, and try to make a fetch request from there?
from next.js.
I'm pretty sure this issue doesn't happen on local environments, only on live servers but I'll be testing on pure node soon.
I also found these 2 related issues?
nodejs/undici#2362
nodejs/undici#1531
from next.js.
We have the exact same issue here
Edit by maintainer bot: Comment was automatically minimized because it was considered unhelpful. (If you think this was by mistake, let us know). Please only comment if it adds context to the issue. If you want to express that you have the same problem, use the upvote 👍 on the issue description or subscribe to the issue for updates. Thanks!
from next.js.
Yeah I'm on that discussion as well. For me though it only happens in production, not local.
Which API are you trying to fetch? Is it through a client component or a serverless function? @hrc7505
from next.js.
Alright, this suggestion nodejs/undici#1531 (comment) might be the fix for UND_ERR_CONNECT_TIMEOUT error. After some additional research and debugging, I tried using
dns.lookup()
,dns.resolve4()
, anddns.resolve6()
to determine which family (IPv4 or IPv6) the DNS I am accessing supports. It turns out that it supports IPv4.
Thanks. So what can I do in order to eliminate this issue?
from next.js.
Thanks. So what can I do in order to eliminate this issue?
@ornakash, I just included
NODE_OPTIONS=--dns-result-order=ipv4first
in Vercel's environment variables for our project, and everything works fine.Note that setting
--dns-result-order=ipv4first
prioritizes IPv4 addresses over IPv6 addresses but does not disregard IPv6 addresses entirely. Both IPv4 and IPv6 addresses are still resolved and included in the results, but IPv4 addresses appear first in the list. This configuration can be useful when you prefer IPv4 connectivity but still want to support IPv6.
Thanks! it looks like it drastically reduced the times this happens.
We had like 200 errors a day, and now only 6 with UND_ERR_CONNECT_TIMEOUT
I hope they'll understand why it happens so we won't get even 6 errors
from next.js.
Thanks! it looks like it drastically reduced the times this happens. We had like 200 errors a day, and now only 6
with UND_ERR_CONNECT_TIMEOUTI hope they'll understand why it happens so we won't get even 6 errors
To see which connectivity the DNS is using for your request, try using:
dns.lookup('example.com', { all: true }, (err, addresses) => {
console.log({ addresses, err });
});
(Replace example.com with the DNS where you received the 6 errors.)
The logs should show something like:
{
addresses: [
{ address: '93.184.215.14', family: 4 },
{ address: '2606:2800:21f:cb07:6820:80da:af6b:8b2c', family: 6 }
],
err: null
}
from next.js.
Linking my resolution here if it helps someone else vercel/vercel#11692 (comment)
from next.js.
Same started happening in our project; 5% of requests on Vercel fail due to timeout. Locally they error out with UND_ERR_HEADERS_TIMEOUT
after a few minutes. Affects two POST API route handlers that call external services.
Tried setting NODE_OPTIONS=--dns-result-order=ipv4first
but didn't seem to help.
Running Next 14.0.4 and Node 18.x
from next.js.
I successfully resolved the issue by configuring the undici global dispatcher in the root layout.
Do you have a solution for pages router as well?
from next.js.
I successfully resolved the issue by configuring the undici global dispatcher in the root layout.
Hi ~,After I add this configuration, build will report an error
next:13.2.3
node:20.11.1
./node_modules/undici/lib/web/fetch/util.js
Module parse failed: Unexpected token (682:63)
File was processed with these loaders:
- ./node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js
- ./node_modules/next/dist/build/webpack/loaders/next-swc-loader.js
You may need an additional loader to handle the result of these loaders.
| // 5. If object is not a default iterator object for interface,
| // then throw a TypeError.
if (typeof this !== "object" || this === null || !(#target in this)) {
| throw new TypeError('next' called on an object that does not implement interface ${name} Iterator.
);
| }
Import trace for requested module:
./node_modules/undici/lib/web/fetch/util.js
./node_modules/undici/lib/web/fetch/formdata.js
./node_modules/undici/index.js
./app/layout.tsx
Build failed because of webpack errors
from next.js.
I am also facing this issue when calling API functions from Zapier:
Unhandled Rejection: TypeError: fetch failed
at node:internal/deps/undici/undici:12502:13
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async p (/var/task/.next/server/app/api/calls/route.js:1:634) {
[cause]: ConnectTimeoutError: Connect Timeout Error (attempted addresses: 54.203.40.250:443)
at onConnectTimeout (node:internal/deps/undici/undici:6635:28)
at node:internal/deps/undici/undici:6587:50
at Immediate._onImmediate (node:internal/deps/undici/undici:6619:13)
at process.processImmediate (node:internal/timers:478:21)
at process.callbackTrampoline (node:internal/async_hooks:130:17) {
code: 'UND_ERR_CONNECT_TIMEOUT'
}
}
Node.js process exited with exit status: 128. The logs above can help with debugging the issue.
from next.js.
I am also facing the same issue when trying to execute SQL using libsql client (Turso):
There has been an error while retrieving the database type.
Debug information:
- URL:
- Response Status Code: N/A
⨯ TypeError: fetch failed
at /usr/lib/node_modules_20/undici/index-fetch.js:8:13
at async $$ACTION_1 (./app/actions/users.ts:48:23)
digest: "3259589146"
Cause: AggregateError [ETIMEDOUT]:
at internalConnectMultiple (node:net:1116:18)
at internalConnectMultiple (node:net:1184:5)
at Timeout.internalConnectMultipleTimeout (node:net:1710:5)
at listOnTimeout (node:internal/timers:575:11)
at process.processTimers (node:internal/timers:514:7) {
code: 'ETIMEDOUT',
[errors]: [
Error: connect ETIMEDOUT 66.51.123.211:443
at createConnectionError (node:net:1646:14)
at Timeout.internalConnectMultipleTimeout (node:net:1705:38)
at listOnTimeout (node:internal/timers:575:11)
at process.processTimers (node:internal/timers:514:7) {
errno: -110,
code: 'ETIMEDOUT',
syscall: 'connect',
address: '66.51.123.211',
port: 443
},
Error: connect ENETUNREACH 2a09:8280:1::6:d39d:443 - Local (:::0)
at internalConnectMultiple (node:net:1180:16)
at Timeout.internalConnectMultipleTimeout (node:net:1710:5)
at listOnTimeout (node:internal/timers:575:11)
at process.processTimers (node:internal/timers:514:7) {
errno: -101,
code: 'ENETUNREACH',
syscall: 'connect',
address: '2a09:8280:1::6:d39d',
port: 443
}
]
}
from next.js.
Just give my data point as well, but in this isn't a serverless, just a regular next workload.
It works well when I was using these versions:
"next": "14.1.3",
"@types/node": "^20.8.4",
But now I am. using next 14.2.4
with node ^20.8.4
, this next version doesn't seem indicate to have a backward compatible, or match with some deps like undici
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: ⨯ TypeError: fetch failed
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at Object.fetch (node:internal/deps/undici/undici:11576:11)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at async fetchExternalImage (/opt/commeasy/oc-web-ui/deploy/1.2.10/node_modules/next/dist/server/image-optimizer.js:565:17)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at async NextNodeServer.imageOptimizer (/opt/commeasy/oc-web-ui/deploy/1.2.10/node_modules/next/dist/server/next-server.js:650:48)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at async cacheEntry.imageResponseCache.get.incrementalCache (/opt/commeasy/oc-web-ui/deploy/1.2.10/node_modules/next/dist/server/next-server.js:182:65)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at async /opt/commeasy/oc-web-ui/deploy/1.2.10/node_modules/next/dist/server/response-cache/index.js:90:36
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at async /opt/commeasy/oc-web-ui/deploy/1.2.10/node_modules/next/dist/lib/batcher.js:45:32 {
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: cause: ConnectTimeoutError: Connect Timeout Error
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at onConnectTimeout (node:internal/deps/undici/undici:8522:28)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at node:internal/deps/undici/undici:8480:50
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at Immediate._onImmediate (node:internal/deps/undici/undici:8511:13)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at process.processImmediate (node:internal/timers:476:21)
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: at process.callbackTrampoline (node:internal/async_hooks:130:17) {
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: code: 'UND_ERR_CONNECT_TIMEOUT'
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: }
Jul 10 05:07:56 ip-30-0-103-10 sh[784691]: }
(END)
from next.js.
Related Issues (20)
- Docs: Missing custom Partytown configuration for `Script` with `strategy="worker"` HOT 4
- Endless issues of Error: Cannot find module '....\.next\server\vendor-chunks\lib\worker.js'
- Conditional building pages with export: output is not supported
- Update eslint-config-next @typescript-eslint/typescript-estree version to support Typescript 5.5 HOT 1
- Next.js bundles libraries only used in Server Components into the Client Bundle Chunks
- [turbo] an unexpected Turbopack error occured HOT 4
- Why the response data is so big in browser when I use the server action with cookies().set or cookies().delete or etc that modify the cookie HOT 2
- NextResponse throws error when http request status code is 204 HOT 1
- BUG: incorrect url encoding in `<link rel="preload">` for prioritized images HOT 2
- `next/font` interferes with header links from middleware. HOT 7
- Can't use bcrypt in middleware HOT 8
- It hasn't been resolved for several months. accesstoken reissue issue
- Error and reload during HMR with MUI HOT 1
- Error and reload during HMR with MUI
- Incomplete data from Link prefetch HOT 2
- Server action called from client component is invoked but return data is always undefined (even though network response has data in it) HOT 16
- Failed to build standalone using instrumentationHook HOT 1
- Next incorrectly infers static builds when using `Promise.prototype.catch` on the dynamic action in a `Page`
- Docs: how to configure lightningcss HOT 1
- React and Node.js it's time to to declare a final response to these issues once and for all related TypeError's there has been enough issue posts about it already
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from next.js.