Javascript 需要帮助才能让JSON.parse()正常工作(Discord Bot)

Javascript 需要帮助才能让JSON.parse()正常工作(Discord Bot),javascript,node.js,json,discord.js,Javascript,Node.js,Json,Discord.js,我有一个单独的JSON文件,链接为 const Players = require('./Database/Players.json'); 还有一个通过密码的praser client.on('message', message => { if (message.content.toLowerCase() ==='smack activate') { let PlayerData = [message.author.username];

我有一个单独的JSON文件,链接为

const Players = require('./Database/Players.json');
还有一个通过密码的praser

client.on('message', message => {


    if (message.content.toLowerCase() ==='smack activate') {
        
        let PlayerData = [message.author.username];

        Activate [message.author.username] = {
        AccountActive: 1,
        Health: 100,
        Level: 1,
        Lust: 0,
        Items: ""
        };

        var parsedata = JSON.parse(Players)   // <-----------
        if (parsedata.PlayerData.accountactive === 1) {
            message.channel.send ("Account Already Activated");
            return;
        }

        fs.writeFile("./Database/Players.json", JSON.stringify (Activate, null, 4), err => {
            if (err) throw err;
            message.channel.send ("Account Activated")
        });
    };

看看
require
是如何工作的。如文件所述:

将_加载为_文件(X)

  • 如果X是文件,请加载X作为其文件扩展名格式。停止
  • 如果X.js是一个文件,则将X.js作为JavaScript文本加载。停止
  • 如果X.json是文件,则将X.json解析为JavaScript对象。停止
  • 如果X.node是一个文件,则将X.node作为二进制加载项加载。停止

  • 因此,您不应该调用
    JSON.parse
    ,因为
    require
    会自动将JSON模块解析为JavaScript对象。

    据我所知,您正在尝试执行以下操作:

  • 检查消息作者是否是具有激活帐户的已知玩家
  • 如果是-发送该帐户已激活的消息并返回
  • 否则-将新玩家数据添加到已知玩家
  • 您可能可以通过以下方式执行此操作:

    const Players = require('./Database/Players.json');
    
    client.on('message', message => {
      if (message.content.toLowerCase() === 'smack activate') {
    
        const PlayerData = Players[message.author.username];
    
        if (PlayerData && (PlayerData.AccountActive === 1)) {
          message.channel.send("Account Already Activated");
          return;
        }
    
        Players[message.author.username] = {
          AccountActive: 1,
          Health: 100,
          Level: 1,
          Lust: 0,
          Items: ""
        };
    
        fs.writeFile("./Database/Players.json", JSON.stringify(Players, null, 4), err => {
          if (err) throw err;
          message.channel.send("Account Activated")
        });
      };
    
    })
    

    如果它已经是JSON数据,为什么要对它进行分析。@DeekshithHegde如果我不分析它,我会收到一个错误,说if(Players.PlayerData.accountactive=1){}中的=符号是错误的。我知道这很有帮助。所以我确实去掉了JSON.parse,但现在得到的错误是=符号是wrong@Yuzi我明白了,你能把
    Players
    变量的内容打印到控制台并在这里共享吗(如果它不包含敏感信息的话)?是的,我可以帮你
    const Players = require('./Database/Players.json');
    
    client.on('message', message => {
      if (message.content.toLowerCase() === 'smack activate') {
    
        const PlayerData = Players[message.author.username];
    
        if (PlayerData && (PlayerData.AccountActive === 1)) {
          message.channel.send("Account Already Activated");
          return;
        }
    
        Players[message.author.username] = {
          AccountActive: 1,
          Health: 100,
          Level: 1,
          Lust: 0,
          Items: ""
        };
    
        fs.writeFile("./Database/Players.json", JSON.stringify(Players, null, 4), err => {
          if (err) throw err;
          message.channel.send("Account Activated")
        });
      };
    
    })