Задать вопрос
Emptyform
@Emptyform

Почему не перехватывается ошибка в .on('error',..)?

Есть такой код:
function (file, res)  {
    fs.createReadStream(file)
        .pipe(res)
        .on('error', err => {
            console.log(err);
            ...
        })
        .on('end', res.end);
};

Если указать неверное имя файла, то сервер падает с ошибкой мол нет такого файла
Ошибка же должна перехватываться в .on('error', ...) ? Или я неверно это понимаю?
Объясните, плиз, новичку...
  • Вопрос задан
  • 167 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@fetis26
Ну, за фронтенд!
.pipe() возвращет стрим куда будет писаться. соответственно ошибку вы не отлавливаете.
нужно переписать так
fs.createReadStream(file)
        .on('error', err => {
            console.log(err);
            ...
        })
        .on('end', res.end)
        .pipe(res)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
EreminD
@EreminD
Кое-что умею
Я, когда путаюсь, начинаю упрощать:
var stream = fs.createReadStream(file);

stream.on('open', function () { /* ... */ });

stream.on('error', function(err) { console.log(err); });


Так выполняется?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы