我在app.js
中有以下内容:
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(req, res, next) {
console.log('app.use');
...
next();
});
app.use(app.router);
public
文件夹包含子文件夹images
,css
和js
。
在app.use(app.router);
之后,我有从Amazon S3返回图像的路由定义。
app.get('/images/:type/:id', image);
问题是当页面包含图像时,app.use
被调用两次。怎么预防呢?我想忽略/images/*
来电app.use(function(req, res, next) {});
答案 0 :(得分:2)
通常Express使用中间件连接架构。每个中间件都接受 next 函数,如果被调用则将该流传递给下一个中间件。因此,从理论上讲,如果你错过它,你可以存档你想要的东西:
app.use(function(req, res, next) {
// check if the route matches amazon file
if(...amazon file...) {
// serve image
} else {
next();
}
});
app.use(express.static(path.join(__dirname, 'public')));