Javascript 未捕获的承诺拒绝语法错误:JSON中位于位置0的意外标记u

Javascript 未捕获的承诺拒绝语法错误:JSON中位于位置0的意外标记u,javascript,node.js,json,Javascript,Node.js,Json,我试图将一个arg记录到json,但它给我0错误意味着它没有得到输入或未定义 但是在console.log中,它清楚地显示了参数我能做什么 const fs = require('fs') module.exports = { name: "write", category: "fun", description: "Save 1 message in our database", run: async (client, message, args) =>

我试图将一个arg记录到json,但它给我0错误意味着它没有得到输入或未定义 但是在console.log中,它清楚地显示了参数我能做什么

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");

        });

    }

}


看来message.json不是有效的json。相反,将代码包装在一个try-catch中,以便在这里处理错误。此外,尝试记录MSG,以便查看输出

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);
}

你的message.json可能不是有效的json,对json.parse的调用失败了。我看到我在看错误的目录文件。我有两个同名的文件,但在不同的目录xd中,这个代码使用的是未定义的,而不是{}xd。谢谢你的帮助