繁体   English   中英

从 localhost:3000 获取到 localhost:8000 时 ECONNREFUSED (Nextjs - DjangoApp)

[英]ECONNREFUSED when fetching from localhost:3000 to localhost:8000 (Nextjs - DjangoApp)

当尝试在前端和后端(React Next.js 和 Django)之间使用“获取”节点 function 发出“POST”请求时,出现“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

编辑1:

如果我启动前端应用程序,并尝试执行 fetch function,它会显示上面的 arrero,但首先会显示这个:

(node:10488) ExperimentalWarning: The Fetch API is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)

不过应该不是原因。

编辑2:

我确实将 Node.js 版本从“v18.11.0”降级到“v16.17.1”,现在可以正常工作了!!

将 Node.js 从 v18 降级到 v16 解决了这个问题。

我似乎面临同样的问题,它看起来与 IP6 有关。 我可以看到您在堆栈跟踪中使用了 IP6: address: '::1'

我看起来在 nodejs 上面的版本中 IP6 有问题。 您可以通过以下方式绕过它:

  1. 使用像 127.0.0.1 这样的硬编码 ip4 地址
  2. 在 linux 中禁用 ip6 支持:参见https://www.techrepublic.com/article/how-to-disable-ipv6-on-linux

如果有人能说出为什么 IP6 不能(总是?)在最新版本的 nodejs 中工作。 我会很高兴听到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM