Tom*_*anc 11 django node.js reactjs econnrefused fetch-api
当尝试在前端和后端(React Next.js 和 Django)之间使用“fetch”节点函数发出“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
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我处理这个错误,那就太好了!
如果您需要更多详细信息或项目文件,请填写询问:D
编辑1:
如果我启动前端应用程序,并尝试执行 fetch 函数,它将显示上面的 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)
Run Code Online (Sandbox Code Playgroud)
不过不应该是这个原因。
编辑2:
我确实将 Node.js 版本从“v18.11.0”降级到“v16.17.1”,现在可以工作了!
我似乎遇到了同样的问题,它看起来与 IP6 有关。我可以看到您在堆栈跟踪中使用 IP6:address: '::1'
显然版本16以上的nodejs中的IP6存在问题。我认为是由此更改触发的:https://www.reddit.com/r/ipv6/comments/qbr8jc/nodejs_finally_prefers_ipv6_addresses_over_ipv4/
您可以通过以下方式绕过此问题:
import dns from 'node:dns';
dns.setDefaultResultOrder('ipv4first');
Run Code Online (Sandbox Code Playgroud)
如果有人能说出为什么 IP6 不能(总是?)在最新版本的 Nodejs 中工作。我很高兴听到这个消息。
| 归档时间: |
|
| 查看次数: |
4899 次 |
| 最近记录: |