0

我正在使用以下代码(由D.Dimitrioglo提供)将目录压缩为 zip 文件。

/**
 * @param {String} sourceDir: /some/folder/to/compress
 * @param {String} outPath: /path/to/created.zip
 * @returns {Promise}
 */
export function zipDirectory(sourceDir: string, outPath: string) {
    const archive = archiver('zip', {zlib: {level: 9}});
    const stream = fs.createWriteStream(outPath);

    return new Promise((resolve, reject) => {
        archive
            .directory(sourceDir, false)
            .on('error', (err: any) => reject(err))
            .pipe(stream)
        ;

        stream.on('error', ex => reject(ex));
        stream.on('warning', ex => console.log(ex));
        stream.on('close', () => resolve(undefined));
        archive.finalize();
    });
}

我有一个运行 zipDirectory 函数的快速打字稿服务器。但是,在运行该函数时,我收到以下警告:

(node:3275) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [ReadStream]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
(node:3275) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [ReadStream]. Use emitter.setMaxListeners() to increase limit

我使用 --trace-warnings 进一步检查警告:

(node:5327) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 end listeners added to [ReadStream]. Use emitter.setMaxListeners() to increase limit
    at _addListener (node:events:465:17)
    at ReadStream.addListener (node:events:487:10)
    at ReadStream.Readable.on (node:internal/streams/readable:876:35)
    at ReadStream.once (node:events:531:8)
    at ReadStream.Readable.pipe (node:internal/streams/readable:678:9)
    at gm._spawn (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:262:25)
    at /home/alqio/workspace/tools/backend/node_modules/gm/lib/command.js:101:12
    at series (/home/user/workspace/tools/backend/node_modules/array-series/index.js:11:36)
    at gm._preprocess (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:177:5)
    at gm.write (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:99:10)
(node:5327) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added to [ReadStream]. Use emitter.setMaxListeners() to increase limit
    at _addListener (node:events:465:17)
    at ReadStream.addListener (node:events:487:10)
    at ReadStream.Readable.on (node:internal/streams/readable:876:35)
    at ReadStream.Readable.pipe (node:internal/streams/readable:751:7)
    at gm._spawn (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:262:25)
    at /home/user/workspace/tools/backend/node_modules/gm/lib/command.js:101:12
    at series (/home/user/workspace/tools/backend/node_modules/array-series/index.js:11:36)
    at gm._preprocess (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:177:5)
    at gm.write (/home/user/workspace/tools/backend/node_modules/gm/lib/command.js:99:10)
    at /home/user/workspace/tools/backend/node_modules/pdf2pic/dist/index.js:1:1360

该代码有效,但这些警告的原因是什么?

4

0 回答 0