我从本地后端服务器获取http://xx.xx.xx.xx:8080到另一台服务器时遇到问题,但是出现错误,但是当我禁用另一台服务器上的防火墙时,发帖请求适用于一段时间,然后再次发生此错误,可以有人帮我解决这个问题,我没有写发布请求,我只是想知道为什么有时会发生此错误,然后又可以工作了,而我没有在创建服务器的代码中了解是防火墙问题还是tls,ssl证书问题,或者问题出在我的本地主机上?
{ FetchError: request to http://xx.xx.xx.xx:8080/users failed, reason: connect ETIMEDOUT xx.xx.xx.xx:8080
at ClientRequest.<anonymous> (C:\Users\deadpool\Desktop\server\node_modules\node-fetch\index.js:133:11)
at ClientRequest.emit (events.js:182:13)
at Socket.socketErrorListener (_http_client.js:391:9)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
name: 'FetchError',
message:
'request to http://xx.xx.xx.xx:8080/users failed, reason: connect ETIMEDOUT xx.xx.xx.xx:8080',
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT' }
答案 0 :(得分:1)
发送到客户端后,我收到错误,无法设置标头,代码正在运行,但是为什么会发生此错误
您正在循环中使用res.json。您只能在路由中调用一次res.json。
调用res.json时,它将发送所有响应和标头,并断开http连接。
您必须编辑代码,以便在所有业务逻辑完成后调用res.json。
还有没有更好的方法来编写这段代码
是的,您的代码变得非常可悲。您为什么不做多个功能来做小的零件?这样,您可以减少嵌套的承诺,并使所有内容可读。