Nodejs和express无法找到资源文件(CSS& JS文件)

时间:2013-12-04 09:47:49

标签: javascript node.js express

我尝试使用express来构建一个简单的网站。 一切正常,直到我决定添加下面的代码来捕捉404错误

app.get('/*', function(req, res) {
 res.render('404.ejs',{
        title: 'PAGE NOT FOUND',
        layout:'layout'})
});

之后,请注意所有内部CSS文件和JavaScript recourse文件,无法正确加载,我弄清楚因为那些CSS和JavaScript文件ref链接它不在路由配置中。这就是为什么所有路由到页面都找不到哪个/ *

所以只想知道,什么是正确的方法,我可以捕获404错误并显示我自己的自定义页面,而且对所有资源文件加载也没有影响。谢谢!

1 个答案:

答案 0 :(得分:3)

如果您使用express,则应使用错误处理中间件,例如:

// Routing and public files
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// Error-handling middleware
app.use(function(err, req, res, next) {
  // Parse error

  // Ex. if error = 500, render 500.jade page

  // At the end
  next(err);
});

// This is called on any page not in router.
app.use(function(req, res, next) {
  res.status(404);

  // respond with html page
  if (req.accepts('html')) {
    res.render('error/404', { title: '404 Error.' });
    return;
  }

  // respond with json
  if (req.accepts('json')) {
    res.send({ error: 'Not found' });
    return;
  }

  // default to plain-text. send()
  res.type('txt').send('Not found');
});

有关快速错误处理的详细信息,请参阅this