http.ClientRequest错误

时间:2013-02-02 01:49:29

标签: node.js

当向我的应用程序抛出请求时,我向另一个Web服务器发送请求。但有时候,我收到了一些我以前从未见过的奇怪的解析错误。

以下是解析错误的样子:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Parse Error
    at Socket.ondata (http.js:1150:24)
    at TCP.onread (net.js:354:27)

这是我用来发送请求的代码:

var request = http.request(options);
request.end();
request.on('response', function (response) {
    response.on('end', function () {
        console.log('Response received');
    }
}

我遇到的问题是如何缓解此问题,以便在发生此错误时再次抛出请求?

1 个答案:

答案 0 :(得分:0)

首先,您应该将所有.on()听众放在.end()之前,因为并非所有API nextTick都是.end()方法。

第二,如果你没有.on('error')监听器,节点的事件发射器会抛出错误。所以你的代码看起来应该更像这个

var request = http.request(options)
request.on('response', function (response) {
  response.on('end', function () {
    console.log('Response received.')
  })
  response.on('error', function (err) {
    console.log('I got a response error.')
    console.error(err.stack)
  })
})
request.on('error', function (err) {
  console.log('I got a request error.')
  console.error(err.stack)
})
request.end()