diff --git a/package.json b/package.json index a358ed0..e761c86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yizhi-multipart-reader", - "version": "1.0.5", + "version": "1.0.6", "description": "", "main": "dist/index.js", "types": "typing/index.d.ts", diff --git a/src/reader.ts b/src/reader.ts index df81234..20ed67a 100644 --- a/src/reader.ts +++ b/src/reader.ts @@ -110,24 +110,29 @@ export class MultipartReader { //处理请求 #handleRequest(req: http.IncomingMessage) { + const onError = (err: Error) => { + this.#reject?.(err) + } + let old: Buffer | null = null //处理剩下的Buffer const dataReader = async (_data: Buffer) => { - //暂停读取 - req.pause() - //数据内容 - const data: Buffer = old ? Buffer.concat([old, _data]) : _data - old = await this.#parseData(data) - //触发一下监听过程 - this.#onReadCallback?.(this.#readed += _data.length) - //处理数据 - req.resume() + try { + //暂停读取 + req.pause() + //数据内容 + const data: Buffer = old ? Buffer.concat([old, _data]) : _data + old = await this.#parseData(data) + //触发一下监听过程 + this.#onReadCallback?.(this.#readed += _data.length) + //处理数据 + req.resume() + } catch (err) { + onError(err as any) + } if (this.#state == ReadState.finish) { this.#resolve?.({ files: this.#files, fields: this.#fields }) } } - const onError = (err: Error) => { - this.#reject?.(err) - } //事件处理 req.on('error', onError) req.on('data', dataReader)