Ошибка обработки fs.createWriteStream в файле только для чтения? - PullRequest
0 голосов
/ 20 июня 2020

На Windows, если я создаю файл и добавляю атрибут только для чтения, а затем выполняю этот вызов:

console.log('a');
let fileWriteStream = fs.createWriteStream('D:\\read-only-file.txt');
console.log('b');
console.log('c');

Я вижу это в консоли Chrome:

a
b
Uncaught Error: EPERM: operation not permitted, open 'D:\read-only-file.txt'
c

Но есть ли способ действительно отловить эту ошибку? Если я go попробую все равно использовать поток записи файлов (т.е. канал с http), он на самом деле ничего не сделает. Если я добавлю этот обработчик:

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

Обработчик ошибок не вызывается. Это похоже на то, что это исключение только для чтения внутренне осиротело. Есть ли способ справиться с этой ошибкой?

Спасибо

1 Ответ

1 голос
/ 21 июня 2020

Спасибо, jfriend00, я продолжал работать над этим, как вы упомянули, вы заставили его работать, и я также заставил его работать. Моя проблема заключалась в том, что я следовал схеме, изложенной в этом ответе:

{ ссылка }

Проблема в том, что .on('error') и .on('finish') были зарегистрированы после звонок на pipe. Я просто изменил его, чтобы регистрировать события сразу после создания потока записи. Теперь все работает.

Спасибо!

...