Toni Joe
Toni Joe

Reputation: 8417

Why does the use() method still executed after get() has handled a request successfully in express.js?

I have this express.js code:

    app.get('/', (req, res) => {
        res.render('homePage', { title: 'Express' });
    });

    app.use((req, res) => {
        console.log('use() is executed');
        res.end();
    });

If the request is handled by the get() method, use() is not supposed to execute. But I noticed that it still execute even though everything was fine and the page is rendered. Did I do something wrong or did I miss something? Thanks.

Upvotes: 0

Views: 41

Answers (1)

Algo7
Algo7

Reputation: 2166

From Express Doc: Link: http://expressjs.com/en/4x/api.html#app.use app.use([path,] callback [, callback...]) Mounts the specified middleware function or functions at the specified path: the middleware function is executed when the base of the requested path matches the path.

app.use() register the function as middleware, and you didn't specify the path. That's why it will run every time when any route is called. The placement of the middlewares will change the execution order. However, they don't change the fact that the middleware will be executed as, well middlewares, which will be executed before the actual functions with in the routes.

Upvotes: 1

Related Questions