我有一個node.js + Express + express-handlebars應用程序。當用戶訪問不存在的頁面時,我想將用戶重定向到404頁面,並在存在內部服務器錯誤或異常(不停止服務器)的情況下將它們重定向到500頁面。在我的app.js中,我已經在最後編寫了中間件來執行這些任務。在Node.js和Express中處理404,500和異常
app.get('*', function(req, res, next) {
var err = new Error();
err.status = 404;
next();
});
//Handle 404
app.use(function(err, req, res, next){
res.sendStatus(404);
res.render('404');
return;
});
//Handle 500
app.use(function(err, req, res, next){
res.sendStatus(500);
res.render('500');
});
//send the user to 500 page without shutting down the server
process.on('uncaughtException', function (err) {
console.log('-------------------------- Caught exception: ' + err);
app.use(function(err, req, res, next){
res.render('500');
});
});
但是隻有404的代碼有效。因此,如果我嘗試去一個網址
localhost:8000/fakepage
它成功地將我重定向到我的404頁面。 505不起作用。並且,對於異常處理,服務器確實保持運行,但它並沒有將我重定向到console.log後的500錯誤頁面。
我很困惑於許多在線的解決方案,人們似乎爲此實現了不同的技術。
這裏有一些我看着
http://www.hacksparrow.com/express-js-custom-error-pages-404-and-500.html
Correct way to handle 404 and 500 errors in express
How to redirect 404 errors to a page in ExpressJS?
https://github.com/expressjs/express/blob/master/examples/error-pages/index.js
var profile = require('./ routes/profile); app.use('/ profie',個人資料);這是我定義所有路線的方式。 – codeinprogress
這很好 - 這些路由應該在404路由和錯誤路由之前設置 - 基本上在上面設置/和/用戶路由的地方。路線排序是至關重要的 – bryanmac
這正是上面的例子。它通過要求用戶加載用戶功能並通過傳遞用戶來設置/用戶路由。 *然後*它設置所有路由後添加404通配符路由,然後最後錯誤500路由 – bryanmac