ドキュメントにはこの情報が記載されていないようです。
使用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!
});