1

我有以下内容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,cssjs.

之后app.use(app.router);,我有从 Amazon S3 返回图像的路由定义。

app.get('/images/:type/:id', image);

问题是当一个页面包含图像时,app.use被调用了两次。如何预防?我想忽略/images/*呼叫app.use(function(req, res, next) {});

4

1 回答 1

2

一般来说,Express 使用中间件连接架构。每个中间件都接受下一个函数,如果调用该函数,则将流程传递给下一个中间件。因此,理论上,如果您错过了它,您可以归档您想要的内容:

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')));
于 2013-09-09T08:53:32.087 回答