2015-11-04 62 views
0

我有这样的:Express不渲染错误

//public source 
app.use('/src', express.static(__dirname + '/../client/source')); 

//Errors 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 
app.use(function(err, req, res) { 
    res.status(err.status || 500); 
    res.end('ERROR 404!'); 
}); 

当服务器找不到文件,创建生成并分配404状态和错误传递到下一个功能错误。然后下一个函数渲染短语ERROR 404!。但实际上这不起作用。在错误服务器上返回浏览器短语Error: Not found和stacktrace,指向一行var err = new Error('Not Found');res.end没有结果。 问题是什么?

回答

2

您的错误处理中间件必须有4个元素;

app.use(function(err, req, res, next) { // this line 
    res.status(err.status || 500); 
    res.end('ERROR 404!'); 
}); 

Have a look at the docs:

一个错误处理中间件具有4的元数,其必须始终保持被识别为一个错误处理中间件。即使您不需要使用下一个对象,请确保指定它以维护签名,否则它将被解释为常规中间件,并且无法处理错误。