Чтение строки с FS возвращает эту ошибку: неожиданный токен r в JSON в позиции 0 - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть строка, а не объект, еще ничего, но мне нужно получить эти данные, и единственный способ, которым я смог это получить, - это выполнить JSON.parse для данных readFile со встроенной FS узла. модуль.

fs.readdir('./Names', (err, files) => {
  files.forEach(file => {
    fs.readFile(`./Names/${file}`, (err, data) => {
      if (err) throw err;
      var string = JSON.parse(data)
      console.log(string)
    })
  });
})

Это мой код сейчас. У меня есть все данные там правильно, для краткого объяснения fs.readdir получает имена всех файлов и затем читает их, но у меня возникает проблема с чтением файлов, так как они не являются объектами, и это будет очень сложно превратить множество .txt в объекты одновременно без сценария, который затем привел бы к этой проблеме.

Есть ли другой способ, которым я мог бы преобразовать часть данных объекта (который является буфером в NodeJS / JS) обратно в строку, которая читается?

1 Ответ

0 голосов
/ 28 апреля 2018

Как упоминалось Патрик , возвращаемый data является буфером, поэтому вам нужно преобразовать его в строку или позволить API сделать это для вас, передав кодировку, например

fs.readdir('./Names', (err, files) => {
    files.forEach(file => {
        fs.readFile(`./Names/${file}`, 'utf8', (err, data) => {
            if (err) throw err;
            // now uncomment this only if your data is JSON formatted
            // var string = JSON.parse(data)
            console.log(data)
        })
    });
})

Ссылка: fs.readFile

...