From e7aaae2f1c108cc9d7d6ba88de3893da3690864e Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Sat, 10 May 2025 17:13:57 +0800 Subject: [PATCH] update --- packages/backend/src/sftp/sftp.controller.ts | 8 ++++---- packages/backend/src/types/archiver-zip-encrypted.d.ts | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/sftp/sftp.controller.ts b/packages/backend/src/sftp/sftp.controller.ts index 46c6455..27c1636 100644 --- a/packages/backend/src/sftp/sftp.controller.ts +++ b/packages/backend/src/sftp/sftp.controller.ts @@ -1,7 +1,7 @@ import { Request, Response } from 'express'; import path from 'path'; import { clientStates, ClientState } from '../websocket'; // +++ 导入 ClientState +++ -import archiver from 'archiver'; // +++ 引入 archiver +++ +import * as archiver from 'archiver'; // +++ 引入 archiver +++ (尝试修复 TS2349) import { SFTPWrapper, Stats } from 'ssh2'; // +++ 移除 Dirent 导入 +++ // 移除 ssh2-streams 导入 @@ -190,15 +190,15 @@ export const downloadDirectory = async (req: Request, res: Response): Promise { + archive.on('warning', (err: Error) => { console.warn(`Archiver warning (用户 ${userId}, 路径 ${remotePath}):`, err); }); - archive.on('error', (err) => { + archive.on('error', (err: Error) => { console.error(`Archiver error (用户 ${userId}, 路径 ${remotePath}):`, err); // 尝试发送错误响应,如果头还没发送 if (!res.headersSent) { diff --git a/packages/backend/src/types/archiver-zip-encrypted.d.ts b/packages/backend/src/types/archiver-zip-encrypted.d.ts index 04d240f..67d95fe 100644 --- a/packages/backend/src/types/archiver-zip-encrypted.d.ts +++ b/packages/backend/src/types/archiver-zip-encrypted.d.ts @@ -11,7 +11,11 @@ declare module 'archiver' { interface Archiver extends NodeJS.EventEmitter { on(event: 'data', listener: (data: Buffer) => void): this; on(event: 'error', listener: (err: Error) => void): this; + on(event: 'warning', listener: (err: Error) => void): this; // 添加 'warning' 事件 + pipe(destination: NodeJS.WritableStream): NodeJS.WritableStream; // 添加 pipe 方法 append(data: any, options: { name: string }): void; finalize(): Promise; + destroyed?: boolean; // 添加 destroyed 属性 + abort(): this; // 添加 abort 方法 } } \ No newline at end of file