错误#404页面不使用Express

时间:2014-06-13 16:41:18

标签: node.js express

当我测试我的错误#404页面时,我得到默认值" Not Found。"

require('html');
var WebSocketServer = require('ws').Server
    , http = require('http')
    , fs = require('fs')
    , express = require('express')
    , app = express();

app.use(express.static(__dirname + '/public'));

var server = http.createServer(app);
server.listen(42069);

var MainServer = new WebSocketServer({server: server});

// Handle 404
app.use(function(req, res) {
    res.status(404).render('/error/404.html',{title: "Error #404"});
});

但是,它确实适用于

app.use(function(req, res) {
    res.status(404).render('/error/404.html',{title: "Error #404"});
});

但我不想被重定向到我的404页面,我希望它能在任何不存在的地址上呈现。

有关如何使其发挥作用的任何想法?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在路线处理后尝试this之类的内容

app.get('/404', function(req, res, next){
  // trigger a 404 since no other middleware
  // will match /404 after this one, and we're not
  // responding here
  next();
});


app.use(function(req, res, next){
  res.status(404);

  // respond with html page
  if (req.accepts('html')) {
    res.render('404', { url: req.url });
    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');
});

答案 1 :(得分:-1)

将所有中间件放在

之后
app.use(function(req,res){

    res.status(404);
    res.render('404page',{

    });

});