expressjs中间件发射两次

时间:2017-08-09 01:26:50

标签: node.js express

如果用户未经过身份验证,我会尝试限制所有页面。

奇怪的是,当我调用登录页面时,我的中间件被调用了两次。

以下是我的代码

app.use((req, res, next) => {
    if (req.session.user) {
        res.session.user = req.session.user;
    }
    if (req.isAuthenticated() || req.path === '/' || req.path === '/login'){
        console.log('inside next');
        next()
    }else{
        console.log('inside redirect');
        res.redirect('/')
    }
});
app.get('/', (req, res) => {

    console.log('inside /')

    res.render('./login', {
        css: ['login.css'],
        js: ['login.js']
    })
});

当我转到我的根页localhost:8000/时,它会在控制台中打印出来

inside next
inside /
inside redirect
inside next
inside /

正如您在调用get('/')后看到的那样,再次调用中间件来重定向页面。为什么是这样?如果删除中间件,/只会被调用一次。

1 个答案:

答案 0 :(得分:1)

我发现了为什么......

显然,Chrome最近添加了对源地图ESRI : Failed to parse source map

的支持

由于源地图未包含在我的vendor文件夹中,因此无法找到源地图并刷新页面。

所以从现在起复制bootstrap文件时要小心 - 使用css文件复制源映射,使其不刷新两次