“Error: socket hang up” with Express

2019-01-28 06:03发布

问题:

Node keeps quitting on me when a client refreshes while still loading a page (so the socket gets terminated, while I am still processing the request). The error:

[ERROR] - Error: socket hang up
   at createHangUpError (http.js:1472:15)
   at Socket.socketCloseListener (http.js:1522:23)
   at Socket.EventEmitter.emit (events.js:95:17)
   at TCP.close (net.js:465:12) (at lib/Maintenance.js:38)

I tried attaching on('error', ... to:

  1. req objects
  2. The return value of listen (I am using Express)
  3. The return value of my get, use and post methods.

And yet, I cannot seem to catch that error; it still gets thrown and none of my error handlers react. What could I possibly be missing?

回答1:

Attach error listeners to the socket objects

app.use(function(req, res, next) {
    req.socket.on("error", function() {

    });
    res.socket.on("error", function() {

    });
    next();
});


回答2:

try catching error like this and see if it works..

app.use(function(err,req, res, next) {
    if(err)console.log(err);
    next();
});