路线404.html for Express app

时间:2015-01-03 12:30:08

标签: javascript html node.js express

我已经看到很多帖子解决了这个问题,但似乎没有一个对我有用,许多解决方案都使用了弃用的方法。

我已经设置了静态文件目录:

app.use(express.static(__dirname + "/public", {maxAge: 86400000*30 }));

然后我在该公共目录中有一个自定义的404.html页面。现在,任何不正确的网址都应该路由到该404.html页面。我尝试了以下内容:

app.use(function(req, res, next){
  res.render("404.html", { url: req.url });
});

但我得到了答复:

Error: Cannot find module 'html'

我做错了什么,为什么这么简单的事情如此艰难?

2 个答案:

答案 0 :(得分:3)

在所有其他中间件和路由处理程序之后添加这样的内容:

app.use(function(req, res) {
  res.sendFile(__dirname + '/public/404.html');
});

答案 1 :(得分:1)

尝试将您的快递版本升级到最新版

已编辑(来自@mscdex的更正版本)

app.get('/api', function(req, res) {
   .....
   res.status(404).sendFile(__dirname + '/public/404.html');
});

http://expressjs.com/api.html#res.status