发送到客户端后,带有快速错误的发布请求无法设置标头是否可以在post req中使用fetch
我遇到一个问题,从我的localhost后端服务器获取:8080到另一台服务器,我得到这个错误,但是当我在其他服务器上禁用防火墙时,帖子请求工作了一段时间,然后这个错误再次发生可以有人帮我这个,我没有写帖子请求,我只是想知道为什么这个错误,有时发生,然后它工作另一次,我不明白,如果它是防火墙问题或者tls ,ssl证书问题,或问题出在我的localhost上,在创建服务器的代码中?
{ FetchError: request to :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 :8080/users failed, reason: connect ETIMEDOUT xx.xx.xx.xx:8080',
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT' }
回答如下:
我收到错误后发送到客户端无法设置标头,代码正在运行,但为什么会发生此错误
你在循环中使用res.json。您只能在路线中呼叫一次res.json。
当您调用res.json时,它会发送所有响应和标头并断开http连接。
您必须编辑代码,以便在完成所有业务逻辑时调用res.json。
是否有更好的方法来编写此代码
是的,您的代码变得非常可怜。你为什么不做多个小功能的小功能?通过这种方式,您可以减少嵌套的承诺,并使一切可读。