Uncaught Ошибка: DelayedStream # maxDataSize 2097152 байт превышен - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу загрузить файл в s3, но не ждать его, однако я получаю следующую ошибку.

Uncaught Ошибка: DelayedStream # maxDataSize из 2097152 байтов превышен. в FormData.CombinedStream._checkDataSize (node_modules / комбинированный поток / lib / комбинированный_поток. js: 166: 19) в Readable.EventEmitter.emit (домен. js: 476: 20) в Readable.source.emit (node_modules /delayed-stream/lib/delayed_stream.js:30:21) в Readable.read (_stream_readable. js: 520: 10) в ManagedUpload.fillStream (node_modules / aws -sdk / lib / s3 / managed_upload . js: 422: 25) в режиме чтения. (node_modules / aws -sdk / lib / s3 / managed_upload. js: 188: 44) в Readable.EventEmitter.emit (домен. js: 476: 20) в Readable.source.emit (node_modules / delayed -stream / lib / delayed_stream. js: 30: 21) в emitReadable_ (_stream_readable. js: 570: 12) в processTicksAndRejected (внутренний / process / task_queues. js: 77: 11)

Использование :

console.log(image)
this.storageModule.upload(`${requestId}-${type}.jpg`, image)
> Readable {
>   _readableState: ReadableState {
>     objectMode: false,
>     highWaterMark: 16384,
>     buffer: BufferList { head: null, tail: null, length: 0 },
>     length: 0,
>     pipes: null,
>     pipesCount: 0,
>     flowing: null,
>     ended: false,
>     endEmitted: false,
>     reading: false,
>     sync: true,
>     needReadable: false,
>     emittedReadable: false,
>     readableListening: false,
>     resumeScheduled: false,
>     paused: true,
>     emitClose: true,
>     autoDestroy: false,
>     destroyed: false,
>     defaultEncoding: 'utf8',
>     awaitDrain: 0,
>     readingMore: false,
>     decoder: null,
>     encoding: null
>   },
>   readable: true,
>   _read: [Function: read],
>   _events: [Object: null prototype] {},
>   _eventsCount: 0,
>   _maxListeners: undefined
> }

StorageModule

import Config from "../../config/config";
import S3 from "aws-sdk/clients/s3";

class StorageModule {

    public config: Config;
    public s3: S3;
    public bucket: string;

    constructor() {
        this.config = new Config();

            const credentials: S3.ClientConfiguration = {
                accessKeyId: this.config.aws.AWS_S3_ACCESS_KEY_ID,
                secretAccessKey: this.config.aws.AWS_S3_SECRET_ACCESS_KEY,
                region: this.config.aws.AWS_S3_REGION,
            };

            this.s3 = new S3(credentials);
            this.bucket = "test-bucket-name";

        }

    }

    public upload = (key, body) => {

        const params = {
            Bucket: this.bucket,
            Key: key,
            Body: body
        }

        return this.s3.upload(params).promise()

    }

}

export default StorageModule;

Однако, когда я запускаю загрузку из теста, работает.

import StorageModule from "./storage.module";
import fs from "fs";
import { expect } from "chai";

describe("StorageModule", () => {

    it("should upload file to s3", async () => {

        const storageModule = new StorageModule();

        const stream = await fs.createReadStream(process.cwd() + "/test/resources/" + "id/front.jpg");

        console.log(stream);

        const key = "test/productId/sessionId/requestId-front.jpg"

        const response = await storageModule.upload(key, stream);

        expect(response.Location).to.equal(`${base}/${key}`)

    });

});

Это связано с читаемым потоком, поскольку изображение, которое я пытаюсь загрузить, точно такое же?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...