writefilesync не записывает все переменные в файл json

У меня есть этот код:

      circular = () => { //fix circular stuff for json.stringify
  seen = new WeakSet();
  return (key, value) => {
    if (typeof value === 'object' && value !== null) {
      if (seen.has(value)) {
        return;
      }
      seen.add(value);
    }
    return value;
  };
};

var gameon = 1;
var fighter1 = {"userid":"97","username":"john","items":{},"ailments":{}};
var fighter2 = {"userid":"91","username":"james","items":{},"ailments":{}};
var resume = 30;

all = {gameon:gameon,fighter1:fighter1,fighter2:fighter2,resume:resume,inturn:fighter1,outturn:fighter2};
    
fs.writeFileSync(file,JSON.stringify(all,circular()),{encoding:'utf8',flag:'w'}); 

Я ожидаю, что следующий вывод будет записан в файл:

      {
  "gameon":1,
  "fighter1":{
    "userid":"97",
    "username":"john",
    "items": {},
    "ailments":{}
   },
   "fighter2":{
     "userid":"91",
     "username":"james",
     "items":{},
     "ailments":{}
    },
    "resume":"",
    "inturn":{
      "userid":"97",
      "username":"john",
      "items":{},
      "ailments":{}
     },
     "outturn":{
       "userid":"91",
       "username":"james",
       "items":{},
       "ailments":{}
      }

но это то, что я получаю вместо этого:

      {
  "gameon":1,
  "fighter1":{
    "userid":"97",
    "username":"john",
    "items":{},
    "ailments":{}
  },
  "fighter2":{
    "userid":"91",
    "username":"james",
    "items":{},
    "ailments":{}
   },
   "resume":""
 }

Обратите внимание, как строка обрезается после «возобновить», как будто она не может прочитать переменные.fighter1иfighter2несмотря на то, что он мог сделать это для первой итерации.

Почему это?

Спасибо.

0 ответов

Другие вопросы по тегам