Как проверить тип ошибки при использовании fs в nodejs

Я с помощью fs в nodejs открываю файл. С помощью try/catch. И если выполняется JSON.parse() по данным из файла, то все ок, если нет - ошибка(catch). Как проверить в catch когда ошибка - файл не найден, а когда ошибка из за не выполнения JSON.parse(). Т.е. данные в файле не в JSON формате?

Код открытия файла: const data = fs.readFileSync('file.json', 'utf8');


Ответы (1 шт):

Автор решения: vsemozhebuty

Можно, например, так:

const fs = require('fs');

let data;

try {
  data = fs.readFileSync('test.json', 'utf8');
} catch {
  console.error('fs error!');
}

if (data) {
  try {
    data = JSON.parse(data);
    console.log(data);
  } catch {
    console.error('JSON error!');
  }
}

Или так:

const fs = require('fs');

try {
  let data = fs.readFileSync('test.json', 'utf8');
  data = JSON.parse(data);
  console.log(data);
} catch(err) {
  if (err.code === 'ENOENT') console.error('fs error!');
  else if (err instanceof SyntaxError) console.error('JSON error!');
  else console.error('Unknown error: ', err);
}
→ Ссылка