fix: Error Handling in Backend und Frontend verbessern (Phase 5, Schritt 31)
- Backend: JSON-Parse-Error + Payload-Too-Large Middleware in index.js - Backend: Dashboard äußerer try/catch für db.get()-Fehler - Backend: contacts/meta Route mit try/catch - Frontend: try/catch + Toast-Fallback in loadMonth (budget), loadRange (calendar), loadWeek (meals), loadLists/switchList (shopping), initiales Laden (notes) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -67,6 +67,17 @@ app.set('trust proxy', 1);
|
||||
app.use(express.json({ limit: '1mb' }));
|
||||
app.use(express.urlencoded({ extended: true, limit: '1mb' }));
|
||||
|
||||
// JSON-Parse-Fehler abfangen (gibt sonst HTML zurück)
|
||||
app.use((err, req, res, next) => {
|
||||
if (err.type === 'entity.parse.failed') {
|
||||
return res.status(400).json({ error: 'Ungültiges JSON im Request-Body.', code: 400 });
|
||||
}
|
||||
if (err.type === 'entity.too.large') {
|
||||
return res.status(413).json({ error: 'Request-Body zu groß (max. 1 MB).', code: 413 });
|
||||
}
|
||||
next(err);
|
||||
});
|
||||
|
||||
// --------------------------------------------------------
|
||||
// Sessions
|
||||
// --------------------------------------------------------
|
||||
|
||||
@@ -151,8 +151,13 @@ router.delete('/:id', (req, res) => {
|
||||
* Kategorien-Liste für Dropdowns.
|
||||
* Response: { data: { categories } }
|
||||
*/
|
||||
router.get('/meta', (req, res) => {
|
||||
res.json({ data: { categories: VALID_CATEGORIES } });
|
||||
router.get('/meta', (_req, res) => {
|
||||
try {
|
||||
res.json({ data: { categories: VALID_CATEGORIES } });
|
||||
} catch (err) {
|
||||
console.error('[contacts/GET /meta]', err);
|
||||
res.status(500).json({ error: 'Interner Fehler', code: 500 });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -25,6 +25,7 @@ const db = require('../db');
|
||||
* }
|
||||
*/
|
||||
router.get('/', (req, res) => {
|
||||
try {
|
||||
const d = db.get();
|
||||
const result = {};
|
||||
|
||||
@@ -116,6 +117,10 @@ router.get('/', (req, res) => {
|
||||
}
|
||||
|
||||
res.json(result);
|
||||
} catch (err) {
|
||||
console.error('[Dashboard] Kritischer Fehler:', err.message);
|
||||
res.status(500).json({ error: 'Dashboard konnte nicht geladen werden.', code: 500 });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user