发送到客户端后,表达错误的发布请求无法设置标头是否可以在发布请求中使用提取

时间:2018-10-15 12:24:30

标签: node.js express

  

我从本地后端服务器获取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' }

1 个答案:

答案 0 :(得分:1)

  

发送到客户端后,我收到错误,无法设置标头,代码正在运行,但是为什么会发生此错误

您正在循环中使用res.json。您只能在路由中调用一次res.json。

调用res.json时,它将发送所有响应和标头,并断开http连接。

您必须编辑代码,以便在所有业务逻辑完成后调用res.json。

  

还有没有更好的方法来编写这段代码

是的,您的代码变得非常可悲。您为什么不做多个功能来做小的零件?这样,您可以减少嵌套的承诺,并使所有内容可读。