Почему мой файловый поток не выполняет функцию ошибки?
Я пытаюсь раздавить 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, объявленная в верхней части, за пределами кода, который выполняется при каждой загрузке страницы, но переместил его на страницу, и это, похоже, сейчас не происходит. Может ли это быть правдой?