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/

Вы можете обойти это следующими способами:

  1. используйте жестко закодированный ip4-адрес, например 127.0.0.1
  2. .
  3. отключите поддержку ip6 в linux: см. https://www.techrepublic.com/article/how-to-disable-ipv6-on-linux
  4. .
  5. настройте узел на использование сначала адресов IP4. См. ECONNREFUSED при выполнении запроса к localhost с помощью fetch в Node.js
  6. .
import dns from 'node:dns';
dns.setDefaultResultOrder('ipv4first');

Если кто-то может сказать, почему IP6 не работает (не всегда?) в последних версиях nodejs. Я был бы рад это услышать.

Вернуться на верх