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:
ulsklyc
2026-03-26 00:35:16 +01:00
parent e068a14819
commit 2e3e67baeb
8 changed files with 75 additions and 19 deletions
+7 -2
View File
@@ -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;
+5
View File
@@ -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;