Node Express - 提供静态内容时出错

时间:2016-02-17 10:39:25

标签: node.js express

我有一些中间件会重定向到这样的登录页面:

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();
  }
});

0 个答案:

没有答案