ECONNREFUSED при выборке с localhost:3000 на localhost:8000 (Nextjs - DjangoApp)
При попытке выполнить 'POST' запрос с помощью функции node 'fetch' между фронтендом и бэкендом (React Next.js и Django) я получил ошибку 'ECONNREFUSED'.
Запросы бэкенда с использованием Postman работали так, как ожидалось.
Django находится на порту: 8000, а Next.js находится на порту: 3000.
Все работало, пока я не установил пакеты XCode, Ionic и Capacitor (я не знаю, являются ли они причиной появления этой ошибки).
Вот ошибка:
TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11118:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async __WEBPACK_DEFAULT_EXPORT__ (webpack-internal:///(api)/./src/pages/api/account/login.js:18:28)
at async Object.apiResolver (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/api-utils/node.js:185:9)
at async DevServer.runApi (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/next-server.js:395:9)
at async Object.fn (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/base-server.js:496:37)
at async Router.execute (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/router.js:226:36)
at async DevServer.run (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/base-server.js:606:29)
at async DevServer.run (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/dev/next-dev-server.js:450:20)
at async DevServer.handleRequest (/Users/tomas.leblanc/Dev/HermesApp/frontend/node_modules/next/dist/server/base-server.js:321:20) {
cause: Error: connect ECONNREFUSED ::1:8000
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1300:16) {
errno: -61,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '::1',
port: 8000
}
}
Было бы здорово, если бы кто-нибудь помог мне справиться с этой ошибкой!
Если вам нужно больше деталей или файлы проекта, пожалуйста, не стесняйтесь спрашивать :D
Понижение версии Node.js с v18 до v16 решило проблему. Если кто-то знает причину, пожалуйста, поделитесь своими мыслями!
Похоже, я столкнулся с той же проблемой, и, похоже, она связана с IP6. Я вижу, что вы используете IP6 в своем стектрейсе: address: '::1'
По-видимому, существует проблема с IP6 в nodejs выше версии 16. Я думаю, что это вызвано этим изменением: https://www.reddit.com/r/ipv6/comments/qbr8jc/nodejs_finally_prefers_ipv6_addresses_over_ipv4/
Вы можете обойти это следующими способами:
- используйте жестко закодированный ip4-адрес, например 127.0.0.1 .
- отключите поддержку ip6 в linux: см. https://www.techrepublic.com/article/how-to-disable-ipv6-on-linux .
- настройте узел на использование сначала адресов IP4. См. ECONNREFUSED при выполнении запроса к localhost с помощью fetch в Node.js .
import dns from 'node:dns';
dns.setDefaultResultOrder('ipv4first');
Если кто-то может сказать, почему IP6 не работает (не всегда?) в последних версиях nodejs. Я был бы рад это услышать.