Неожиданный конец ввода JSON при запросе файла JSON - PullRequest
0 голосов
/ 09 января 2019

При использовании fs.writeFile я создаю файл JSON, который выглядит следующим образом:

[{"schoolname":"Scottsdale","StudentFirst":"john","StudentLast":"smith","grade":"2","email":"john@smith.com","ParentLast":"Smith","ParentFirst":"John"}]

За исключением случаев, когда мне требуется тот же файл, я получаю сообщение об ошибке:

Unexpected end in JSON input

Я делал то же самое раньше, но использовал большие данные, и, похоже, он работал нормально.

await fs.writeFile(`./${fileName}.json`, 
JSON.stringify(result.recordsets[0]), function(err) {
     if(err) {
           return console.log(err)
     }
})
const file = require(`./${fileName}.json`)

Ожидаемые результаты должны возвращать JSON выше, чтобы я мог получить копию файла и перебрать его.

1 Ответ

0 голосов
/ 09 января 2019

Ошибка связана с требованием пустого файла JSON. Файл JSON пуст, потому что fs.writeFile является асинхронным, а вы используете await неправильно.

  1. Вам необходимо использовать await внутри асинхронной функции
  2. Вы можете использовать await только с обещаниями, но не с обратными вызовами

Вариант 1: использовать fs.writeFileSync

fs.writeFileSync(
  `./${fileName}.json`, 
  JSON.stringify(result.recordsets[0])
)
const file = require(`./${fileName}.json`)

Вариант 2: завернуть fs.writeFile в обещание

(async () => {
  await new Promise((resolve, reject) => {
    fs.writeFile(
      `./${fileName}.json`, 
      JSON.stringify(result.recordsets[0]),
      function(err) {
        if (err) {
          reject()
          return console.log(err)
        }
        resolve()
      }
    )
  });
  const file = require(`./${fileName}.json`)
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...