From db9a18b367d98c3df9bb6a276711fba982db9da1 Mon Sep 17 00:00:00 2001 From: Bot Date: Sun, 1 Mar 2026 22:25:10 +0100 Subject: [PATCH] Fix: TypeScript-Fehler im multer Upload-Endpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - @types/multer zu devDependencies hinzugefügt (fehlte → TS7016) - Explizite Callback-Typen in diskStorage/fileFilter (TS7006) - Express.Multer.File durch lokalen MulterFile-Type ersetzt (TS2694) Co-Authored-By: Claude Opus 4.6 --- server/package.json | 1 + server/src/index.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/server/package.json b/server/package.json index cf39bef..e02373e 100644 --- a/server/package.json +++ b/server/package.json @@ -24,6 +24,7 @@ "devDependencies": { "@types/cors": "^2.8.17", "@types/express": "^4.17.21", + "@types/multer": "^1.4.12", "@types/node": "^20.12.12", "ts-node": "^10.9.2", "typescript": "^5.5.4" diff --git a/server/src/index.ts b/server/src/index.ts index 11b1133..2016f8a 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1030,9 +1030,11 @@ app.post('/api/admin/sounds/rename', requireAdmin, (req: Request, res: Response) }); // --- Datei-Upload (Drag & Drop) --- +type MulterFile = { fieldname: string; originalname: string; encoding: string; mimetype: string; destination: string; filename: string; path: string; size: number; }; + const uploadStorage = multer.diskStorage({ - destination: (_req, _file, cb) => cb(null, SOUNDS_DIR), - filename: (_req, file, cb) => { + destination: (_req: any, _file: any, cb: (e: null, dest: string) => void) => cb(null, SOUNDS_DIR), + filename: (_req: any, file: { originalname: string }, cb: (e: null, name: string) => void) => { const safe = file.originalname.replace(/[<>:"/\\|?*\x00-\x1f]/g, '_'); const { name, ext } = path.parse(safe); let finalName = safe; @@ -1046,7 +1048,7 @@ const uploadStorage = multer.diskStorage({ }); const uploadMulter = multer({ storage: uploadStorage, - fileFilter: (_req, file, cb) => { + fileFilter: (_req: any, file: { originalname: string }, cb: (e: null, ok: boolean) => void) => { const ext = path.extname(file.originalname).toLowerCase(); cb(null, ext === '.mp3' || ext === '.wav'); }, @@ -1054,9 +1056,9 @@ const uploadMulter = multer({ }); app.post('/api/upload', requireAdmin, (req: Request, res: Response) => { - uploadMulter.array('files', 20)(req, res, async (err) => { - if (err) return res.status(400).json({ error: err.message ?? 'Upload fehlgeschlagen' }); - const files = (req as any).files as Express.Multer.File[] | undefined; + uploadMulter.array('files', 20)(req, res, async (err: any) => { + if (err) return res.status(400).json({ error: err?.message ?? 'Upload fehlgeschlagen' }); + const files = (req as any).files as MulterFile[] | undefined; if (!files?.length) return res.status(400).json({ error: 'Keine gültigen Dateien (nur MP3/WAV)' }); const saved = files.map(f => ({ name: f.filename, size: f.size })); // Normalisierung im Hintergrund starten