0

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

以下是解析错误的样子:

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');
    }
}

我的问题是如何减轻这种情况,以便在发生此错误时再次抛出请求?

4

1 回答 1

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()
于 2013-02-02T08:07:26.883 回答