似乎文档没有提供此信息。
使用时serveFile
如何检查提供的文件是否存在?
fileServer.serveFile('/error.html', 500, {}, request, response);
换句话说,如何检查文件是否成功提供?
似乎该serveFile
函数不接受回调函数。还是我错了?
似乎文档没有提供此信息。
使用时serveFile
如何检查提供的文件是否存在?
fileServer.serveFile('/error.html', 500, {}, request, response);
换句话说,如何检查文件是否成功提供?
似乎该serveFile
函数不接受回调函数。还是我错了?
似乎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
,并将相同的“promise”对象传递给它。它将发出一个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!
});