РЕДАКТИРОВАТЬ: Спасибо @robertklep за рефакторинг моего решения, который хорошо оборачивает все это.Вот гораздо более краткое решение, которое уведомляет вас о том, что любой статический файл обслуживается, и печатает его URL:
const express = require("express");
const app = express();
const static = express.static('static');
app.use(function(req, res, next) {
// declare a handler for the "request end" event
function staticReqNotifier() {
console.log("static file was served", req.url);
}
// listen to that event in before the static middleware is invoked
req.on("end", staticReqNotifier);
// manually invoke the static middleware with this middleware's arguments
// we define the static middleware's next function - if it's called, the
// resource requested is not static so detach the listener and forward the response
static(req, res, (err) => {
req.off("end", staticReqNotifier);
next(err);
});
});
// test endpoint so show non-static requests work fine
app.get("/", function(req, res) {
res.send("test");
});
app.listen(3000);
Поскольку любой экспресс-запрос может быть выполнен не более чем одним промежуточным программным обеспечением, прослушивание «запроса имеетзакончилась "событие до статического промежуточного программного обеспечения и отсоединение его после того, как мы убедились, что статическое промежуточное программное обеспечение не выполнило, запроса достаточно.Надеюсь, это поможет!