Express 4处理404错误

我使用Express 4,我有大约50个HTML页面。 我试图处理404错误,但无法弄清楚如何。 我不想手动定义节点内的所有路由器。 如果页面不存在,是否有dynamicredirect到404 Jade模板的方法?

我试过这个代码,但没有工作:

app.enable('verbose errors'); app.set('port', 3000); app.use(express.static(__dirname + '/html/')); var server = http.createServer(app); server.listen(app.get('port'), function() { console.log('ONLINE !'); }); app.use(function(req, res, next) { console.log('GET ' + req.originalUrl) console.log('At %d', Date.now()); next(); }); // Handle 404 app.use(function(req, res, next) { if(req.accepts('html') && res.status(404)) { res.render('404.jade'); return; } }); 

这对我有用:

 var express = require('express'); var app = express(); app.use(express.static('public')); app.get('/', function (req, res) { res.send('Hello World!'); }); app.get('/employee', function (req, res) { res.send('Employee route !!'); }); // Handle 404 - Keep this as a last route app.use(function(req, res, next) { res.status(404); res.send('404: File Not Found'); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); }); 

文件夹结构,

在这里输入图像描述

现在当我们发出这样的请求

HTTP://本地主机:3000 /样品

这已经由中间件处理了。

UPDATE

在不写入get请求的情况下显示html文件的方法就是这样的另一个中间件

 app.use(express.static('public')); app.use(express.static('views')); 

在“公开”后添加“视图”中间件。

现在,如果我们给

HTTP://本地主机:3000 / index.html的

页面呈现。