语法错误:/Users/3x7r3m157/Development/Javascript

在这个我似乎找不到的错误中,我正在读取一个名为 db.json 的 .json 文件,更新 json 并尝试写入 .json 文件。虽然我正在解析和字符串化 json,但我收到此错误:


语法错误:/Users/3x7r3m157/Development/Javascript/db.json:JSON 输入意外结束


我的代码如下:


const args = require('yargs').argv;

const fs = require('fs');

const util = require('util');

const leaderboard = require('./db.json')


const addCompetitor = (name) => {

  leaderboard[name] = { points: [], times: [] }

  console.log(leaderboard)

  return leaderboard

}


console.log(leaderboard)


const addCompetitorTimes = (data) => {

  console.log(data)

  //this method takes a string of 'competitorName_time'

  //parses it into substrings 'name' & 'time'.


  //Afterwards it iterates through time in minutes and seconds as a string

  //in the format of '00:00', then parses the string into substrings

  //of minutes and seconds delimited by the ':' character.

  //Thereafter it converts the string to integeters and converts the time

  //into time in seconds for easy comparison of times.


  //Finally it assigns the time to the competitor in the leaderboard and

  //writes to json file db.json


  let parser = 0;

  var competitor = '';

  let times = '';

  let seconds = '';

  let minutes = '';

  let timeInSeconds = 0;


  for (let i = 0 ; i < data.length ; i ++) {

    if (parser == 0 && data[i] == '_') {

      parser ++

      continue

    }

    if (parser == 0) {

      //Stack Overflow peeps, weird error right hurrr:

      competitor += data[i]

    }

    if (parser == 1) {

      times += data[i]

    }

  }


  parser = 0


  for (let i = 0 ; i < times.length ; i ++) {

    if (parser == 0 && times[i] == ':') {

      parser ++

      continue

    }

    if (parser == 0) {

      minutes += times[i]

    }

    if (parser == 1) {

      seconds += times[i]

    }

  }


  seconds = parseInt(seconds);

  minutes = parseInt(minutes);


  let minutesInSeconds = minutes * 60


  seconds = minutesInSeconds + seconds

  leaderboard[competitor].times = seconds


  console.log(leaderboard)


  fs.writeFileSync('./db.json', JSON.stringify(leaderboard));


  return leaderboard

}


addCompetitorTimes(args.competitorTimes)


慕村225694
浏览 133回答 2
2回答

BIG阳

问题是“require”为您解析了 json,但您使用 json.parse 对其进行了冗余解析。它已经是一个对象,这失败了。只是不要重复解析。需要就够了。

千巷猫影

您正在编辑您仍在阅读的文件。首先更改路径的名称,我建议在使用 JSON 或读/写文件时始终使用 try catch:&nbsp; try {&nbsp; &nbsp;fs.writeFileSync(require.resolve('./new-db.json')), JSON.stringify(leaderboard));&nbsp; &nbsp;&nbsp;&nbsp; } catch (error) {&nbsp; &nbsp; console.log(error)&nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript