我正在使用Express 4,我有大约50个html页面。我试图处理404错误,但无法弄清楚如何处理。我不想手动定义节点内的所有路由器。如果页面不存在,有没有办法动态重定向到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;
}
});
答案 0 :(得分:12)
这对我有用:
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!');
});
文件夹结构,
现在我们发出这样的请求
这已由中间件处理。
<强>更新强>
在不编写获取请求的情况下显示html文件的方式只是另一个像这样的中间件
app.use(express.static('public'));
app.use(express.static('views'));
在'public'之后添加'views'中间件。
现在,如果我们给出
页面已呈现。
答案 1 :(得分:0)
如果您只想重定向,那么您可以简单地使用它:
app.use((req, res) => {
res.status(404).redirect('/MyHomepage')
});
答案 2 :(得分:0)
很简单,你可以添加这个中间件
app.use(function (req, res, next) {
res.status(404).send("Sorry can't find that!")
})