为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2021-11-18 20:29:07
在这个我似乎找不到的错误中,我正在读取一个名为 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)
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

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


查看完整回答
反对 回复 2021-11-18
?
千巷猫影

TA贡献1829条经验 获得超7个赞

您正在编辑您仍在阅读的文件。首先更改路径的名称,我建议在使用 JSON 或读/写文件时始终使用 try catch:


  try {

   fs.writeFileSync(require.resolve('./new-db.json')), JSON.stringify(leaderboard));    

  } catch (error) {

    console.log(error)

  }


查看完整回答
反对 回复 2021-11-18
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信