未捕获的承诺拒绝语法错误:JSON中位置0处的意外令牌u

时间:2019-10-24 12:20:44

标签: javascript node.js json

我正在尝试将arg登录到json,但是给我0错误意味着它没有得到输入或未定义 但是在console.log中,它清楚地显示了args我该怎么办?

const fs = require('fs')

module.exports = {
    name: "write",
    category: "fun",
    description: "Save 1 message in our database",
    run: async (client, message, args) => {
        let save = args.join(" ");
        console.log(save)

        let msgs = JSON.parse(fs.readFileSync("./message.json", "utf8"));

        msgs[message.guild.id] = {
            msgs: save
        };
        await fs.writeFile("./message.json", JSON.stringify(msgs), (err) => {
            if (err) throw err;
            message.channel.send("message logged");

        });

    }

}

1 个答案:

答案 0 :(得分:1)

似乎message.json不是有效的JSON。而是将代码包装在try-catch中,以便可以在此处处理错误。另外,尝试记录 msgs ,以便可以查看输出。

try {
 let msgs = JSON.parse(fs.readFileSync("./message.json", "utf8"));

 msgs[message.guild.id] = {
   msgs: save
 };
 await fs.writeFile("./message.json", JSON.stringify(msgs), (err) => {
  if (err) throw err;
  message.channel.send("message logged");
 }); 
} catch(e) {
  console.log(e.message);
}