2015-11-04 95 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的元數,其必須始終保持被識別爲一個錯誤處理中間件。即使您不需要使用下一個對象,請確保指定它以維護簽名,否則它將被解釋爲常規中間件,並且無法處理錯誤。