Почему мой файловый поток не выполняет функцию ошибки?

Я пытаюсь раздавить PNG, используя этот код:

var pngcrush = new PngCrush(['-rem','allo', '-m', '0']); //methods 1-10

  const pathPreCrush = 'temp/' + randomstring.generate(20) + '.png';
  const pathCrushed = 'temp/' + randomstring.generate(20) + '.png';


    //crush png
    fs.createReadStream(pathPreCrush).pipe(pngcrush).on('error', function(e){
      return callback('error crushing file');
    }).pipe(fs.createWriteStream(pathCrushed)).on('finish', function () {
      return callback(null, pathCrushed);
    });

Иногда это работает безупречно и возвращает обратный вызов с новым путем. Но иногда это не работает. Он не возвращает ошибку, он просто ничего не делает. Это показывает файл pathCrushed, который будет создан, но имеет 0 байтов. Он зависает от этой функции и никогда не проходит, пока не истечет время ожидания.

Я что-то упускаю или каким-то образом выясняю, что происходит не так?

РЕДАКТИРОВАТЬ: у меня была первая строка pngcrush, объявленная в верхней части, за пределами кода, который выполняется при каждой загрузке страницы, но переместил его на страницу, и это, похоже, сейчас не происходит. Может ли это быть правдой?

0 ответов

Другие вопросы по тегам