Не удается проанализировать содержимое файла в JSON из-за комментария в первой строке

#node.js

Вопрос:

Я пытаюсь получить содержимое файла в формате JSON, но не могу разобрать JSON из — за первой строки

 /* To learn more about this file see: https://angular.io/config/tsconfig. */
{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "module": "es2020",
    "lib": [
      "es2018",
      "dom"
    ]
  }
}
 

Я пытаюсь получить содержимое файла, запустив этот код в Node.JS

 
function initTSConfig() {
  const filePath = path.join(__dirname, 'tsconfig.json');
  readFile(filePath)
    .then(content => {
      // let config = JSON.parse(content);
      console.log(typeof content);
      console.log(`---> TS Config was changed successfully`);
    })
    .catch(e => {
      console.log(`---> TS Config was not changed because of ${e}`);
    })
}


function readFile(filePath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, 'utf-8', (err, content) => {
      if (err) {
        console.warn(err);
        reject(err);
      }

      resolve(content);
    })
  })
}
 

Любая помощь будет признательна

Ответ №1:

Вы могли бы просто отрезать первую строку перед анализом.

 readFile(filePath)
  .then((content) => {
    const json = content
      .split('n')
      .slice(1)
      .join('n');
    const parsedObj = JSON.parse(json);
 

Если вы не используете чрезвычайно устаревшую версию Node, я бы также предложил использовать fs.promises вместо обещанной пользовательской readFile .

 fs.promises.readFile(filePath, 'utf-8')
  .then((content) => {
 

Комментарии:

1. Я использую версию узла 14.x, спасибо @CertainPerformance. Позвольте мне попробовать этот пример и вернуться