从node-static捕获serveFile函数上的错误

似乎该文档不提供此信息。

在使用serveFile如何检查服务文件是否存在?

 fileServer.serveFile('/error.html', 500, {}, request, response); 

换句话说,我怎样才能检查文件是否成功传递?

似乎serveFile函数不接受callback函数。 还是我错了?

它看起来serveFile返回一个“承诺”(虽然它不是一个承诺,它是一个EventEmitter的实例),所以你可以监听error事件(当文件不存在时它会触发):

 Server.prototype.serveFile = function (pathname, status, headers, req, res) { var that = this; var promise = new(events.EventEmitter); pathname = this.resolve(pathname); fs.stat(pathname, function (e, stat) { if (e) { return promise.emit('error', e); } that.respond(null, status, headers, [pathname], stat, req, res, function (status, headers) { that.finish(status, headers, req, res, promise); }); }); return promise; }; 

如果文件成功传送,则调用finish方法,并将相同的“承诺”对象传递给它。 它会发出一个success事件:

 Server.prototype.finish = function (status, headers, req, res, promise, callback) { // ... if (!status || status >= 400) { // ... } else { // ... promise.emit('success', result); } }; 

所以,你可以做这样的事情:

 var promise = fileServer.serveFile('/error.html', 500, {}, request, response); promise.on("success", function () { // It worked! });