最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在JS中写入文件时如何解决“意外令牌:”错误

IT培训 admin 6浏览 0评论

在JS中写入文件时如何解决“意外令牌:”错误

我目前正在为服务器开发一个新的Discord机器人,我刚刚开始利用.js文件来存储永久数据。我已经建立了一个通过输入“ [Finished]等...来记录突袭参与者的系统...如果我要存储数据的.js文件为空,则一切正常,并且所有数据均已正确写入文件。” ,如果漫游器重新启动,然后.js文件已经包含其他与会者的数据,而我尝试将新数据写入该文件,则会引发“意外令牌”错误。

我尝试使用fs.writeFileSync(),但似乎无法解决问题,我进行了大量研究,但似乎找不到针对我问题的具体答案。

要写入的空文件:

{

}

数据已经存在时的文件:

{
    "2887482348774": {
        "amount": 1
    },
    "1746782476348": {
        "amount": 1
    }
}

伪造的伪造的ID。

命令代码:

const Discord = require('discord.js');
const fs = require('fs');

module.exports.run = async (bot, message, args) => {
  bot.msgs = require("./raiddata/raidattendance.js");
  if (message.channel.id !== '631620937418145802') return;
  if (!message.member.roles.some(r => ["Raider in Command", "Permissions"].includes(r.name))) return;

  for (let attenders of message.mentions.users.keyArray()) {
    message.channel.send(`Found user: ${attenders}`);
    bot.msgs [attenders] = {
      amount: 1
    }
    console.log("Works");
    fs.writeFileSync ('./commands/raiddata/raidattendance.js', JSON.stringify (bot.msgs, null, 4), err => {
      if (err) throw err;
    });
    message.channel.send(bot.msgs[attenders].amount);
  }
}

module.exports.config = {
  command: "finished]"
}

我希望代码仅从中断处继续写入文件,但不是。这是我得到的错误:

8 commands found.
Command announcement.js loading...
Command changelog.js loading...
Command delete.js loading...
Command lock.js loading...
Command lograid.js loading...
Command notice.js loading...
Command raid.js loading...
Command unlock.js loading...
Bot is now running.
(node:6896) UnhandledPromiseRejectionWarning: C:\Users\Removed\Downloads\Removed\Removed\commands\raiddata\raidattendance.js:2
    "1746782476348": {
                   ^

SyntaxError: Unexpected token :
    at Module._compile (internal/modules/cjs/loader.js:721:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
回答如下:

问题是您正在使用require()读取扩展名为.js的json文件。这是不期望的。如果您将文件更改为具有.json扩展名,它将解决此问题。

您可能希望使用fs模块而不是require()来读取文件,因为它可以提供更大的灵活性和更好的实践。

在JS中写入文件时如何解决“意外令牌:”错误

我目前正在为服务器开发一个新的Discord机器人,我刚刚开始利用.js文件来存储永久数据。我已经建立了一个通过输入“ [Finished]等...来记录突袭参与者的系统...如果我要存储数据的.js文件为空,则一切正常,并且所有数据均已正确写入文件。” ,如果漫游器重新启动,然后.js文件已经包含其他与会者的数据,而我尝试将新数据写入该文件,则会引发“意外令牌”错误。

我尝试使用fs.writeFileSync(),但似乎无法解决问题,我进行了大量研究,但似乎找不到针对我问题的具体答案。

要写入的空文件:

{

}

数据已经存在时的文件:

{
    "2887482348774": {
        "amount": 1
    },
    "1746782476348": {
        "amount": 1
    }
}

伪造的伪造的ID。

命令代码:

const Discord = require('discord.js');
const fs = require('fs');

module.exports.run = async (bot, message, args) => {
  bot.msgs = require("./raiddata/raidattendance.js");
  if (message.channel.id !== '631620937418145802') return;
  if (!message.member.roles.some(r => ["Raider in Command", "Permissions"].includes(r.name))) return;

  for (let attenders of message.mentions.users.keyArray()) {
    message.channel.send(`Found user: ${attenders}`);
    bot.msgs [attenders] = {
      amount: 1
    }
    console.log("Works");
    fs.writeFileSync ('./commands/raiddata/raidattendance.js', JSON.stringify (bot.msgs, null, 4), err => {
      if (err) throw err;
    });
    message.channel.send(bot.msgs[attenders].amount);
  }
}

module.exports.config = {
  command: "finished]"
}

我希望代码仅从中断处继续写入文件,但不是。这是我得到的错误:

8 commands found.
Command announcement.js loading...
Command changelog.js loading...
Command delete.js loading...
Command lock.js loading...
Command lograid.js loading...
Command notice.js loading...
Command raid.js loading...
Command unlock.js loading...
Bot is now running.
(node:6896) UnhandledPromiseRejectionWarning: C:\Users\Removed\Downloads\Removed\Removed\commands\raiddata\raidattendance.js:2
    "1746782476348": {
                   ^

SyntaxError: Unexpected token :
    at Module._compile (internal/modules/cjs/loader.js:721:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:690:17)
    at require (internal/modules/cjs/helpers.js:25:18)
回答如下:

问题是您正在使用require()读取扩展名为.js的json文件。这是不期望的。如果您将文件更改为具有.json扩展名,它将解决此问题。

您可能希望使用fs模块而不是require()来读取文件,因为它可以提供更大的灵活性和更好的实践。

发布评论

评论列表 (0)

  1. 暂无评论