【问题标题】:Error #404 Page Not Working with Express错误 #404 页面不适用于 Express
【发布时间】:2014-08-04 07:07:51
【问题描述】:

当我测试我的错误 #404 页面时,我得到默认的“未找到”。

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 页面,我希望它在任何不存在的地址上呈现。

关于如何让它发挥作用的任何想法?

谢谢!

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    把它放在你所有的中间件之后

    app.use(function(req,res){
    
        res.status(404);
        res.render('404page',{
    
        });
    
    });
    

    【讨论】:

      【解决方案2】:

      您可以在路线处理后尝试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');
      });
      

      【讨论】:

      • 我无法让它工作。它只是给我错误 500。@infer-on
      猜你喜欢
      • 2014-12-17
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 2014-12-07
      • 2013-04-28
      • 2019-10-23
      相关资源
      最近更新 更多