我有一个expressjs服务器,它使用sendFile函数向其客户端发送文件。我使用函数的回调来了解错误发生的时间。现在似乎每当sendFile决定用304响应时(在我的情况下这是期望的行为),它的回调被调用,并出现以下错误:
Error: Request aborted: sendFile error
at Object._onImmediate (.../node_modules/express/lib/response.js:941:17)
at processImmediate [as _immediateCallback] (timers.js:336:15)
{ [Error: Request aborted: sendFile error] code: 'ECONNABORT' }
我无法找到有关此问题的任何文档,我想知道如何确定何时忽略此错误以及何时对其做出反应,因为似乎可能存在其他情况,此类错误是一种症状问题,而不仅仅是期望行为的副作用。
这确实是sendFile应该做的吗?有没有这方面的文件?如何区分此错误与其他ECONNABORT错误?
答案 0 :(得分:3)
response.statusCode可以帮助检测这种情况,但我不知道这是否也会捕获其他错误。这是我修改后的代码改编自the docs
res.sendFile(filename, options, function (err) {
if (err) {
if (err.code === "ECONNABORT" && res.statusCode == 304) {
// No problem, 304 means client cache hit, so no data sent.
console.log('304 cache hit for ' + filename);
return;
}
console.error("SendFile error:", err, " (status: " + err.status + ")");
if (err.status) {
res.status(err.status).end();
}
}
else {
console.log('Sent:', filename);
}