我有一些中间件会重定向到这样的登录页面:
app.use('/login', function(req, res){
res.sendFile(__dirname + '/public/login.html');
});
app.use(function(req, res, next){
if(!req.session.accessToken){
res.redirect('/login');
}
next();
});
在一些早期的代码中,当服务器启动时,我将我的公共目录添加为静态资源:
app.use(express.static('public'));
我看到登录页面出现,但是它呈现的不正确,我在控制台中看到错误:
未捕获的SyntaxError:意外的标记<
这是我的login.html文件中的开头<html>
标记的引用。从我遇到过的其他帖子中,这似乎表明在使用像Jade这样的模板引擎并使用无法处理的原始html文件时出现问题,但我在设置中没有使用jade,所以我有点困惑
有人可以帮我理解这里可能出现的问题吗?
修改
我现在已根据评论尝试重定向到我的login.html,所以我现在就拥有这个:
app.use(function(req, res, next){
if(!req.session.accessToken){
res.redirect('/login.html');
}
next();
});
我已经在登录页面所在的公共目录中提供静态内容:
app.use(express.static('public'));
但我现在在浏览器中遇到重定向循环错误,而我的服务器控制台从Express中抛出错误说:
错误:发送后无法设置标头。
编辑2
管理以使用以下方法解决此问题:
app.use('/login', function(req, res){
res.status(401).sendFile(path.join(__dirname+'/public/login.html'))
});
app.use(function(req, res, next) {
if (!req.session.accessToken) {
res.redirect('/login');
} else {
next();
}
});