当前位置: 首页 > 知识库问答 >
问题:

Make Discord Bot for node.js json.parse()错误:未定义:1

许彦
2023-03-14

我想制造不和机器人。

我使用Node.js和Discord API。

我的错误:

C:\----\----\Desktop\SiiNaBot>node app.js
undefined:1
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at Object.<anonymous> (C:\Users\Lin\Desktop\SiiNaBot\app.js:7:21)
at Module._compile (module.js:573:30)
at Object.Module._extensions..js (module.js:584:10)
at Module.load (module.js:507:32)
at tryModuleLoad (module.js:470:12)
at Function.Module._load (module.js:462:3)
at Function.Module.runMain (module.js:609:10)
at startup (bootstrap_node.js:158:16)
at bootstrap_node.js:598:3

我的绳索:

//Calling the pakage
const Discord = require('discord.js');
const bot = new Discord.Client();
const fs = require('fs');

// JSON Files
let userData = JSON.parse(fs.readFileSync('Storage/userData.json', 'utf8')); // This calls the JSON file.

//Listener Event : Message Received ( This wiil run every time a message is recived)
bot.on('message', message => {
  //Variables
  let sender = message.author; // The person who sent th message
  let msg = message.content.toUpperCase(); // Takes the message, and makes it all uppercase
  let prefix = '>' // The test before commands, you can set this to what ever you want

  //Event
  if(!userData[sender.id + message.guild.id]) userData[sender.id + message.guild.id] = {} // This creates a json file for their user + guild, if one is not made already.
  if(!userData[sender.id + message.guild.id].money) userData[sender.id + message.guild.id].money = 1000; // This creates a money object for them if they start out with, you can change this to whatever you want.

  fs.writeFile('Storage/userData.json', JSON.stringify(userData), (err) => { 
//This writes the changes we just made to the JSON file.
    if (err) console.error(err);
  })
  // Commends

  //Ping
  if (msg === prefix + 'PING'){
    message.channel.send('Pong!') // Sends a message to the chanel, with the contens: "Pong!"
  }




})

// This code runs when the bot turns on
bot.on('ready', () => {
  console.log('Economy Launched...')
})


// Login

bot.login('I`ll write code my bot token'); 
//Don`t let people see this code, people can control your bot, including the servers your bot has admin on.

我的文件夹

此处得“我得文件夹”结构

我想这个错误就是这一行

让userData=json.parse(fs.readfileSync('storage/userData.json','utf8'))

还有...

fs.writefile('storage/userData.JSON',JSON.stringify(userData),(err)=>{//这将写入我们刚刚对JSON文件所做的更改。if(err)console.error(err);})

这条线。但我不知道怎么才能修好这条绳子。

我该怎么办?

共有2个答案

云瑞
2023-03-14

我使用的教程和你使用的完全一样。有一个非常简单的方法可以解决这个问题。只需输入UserData.json,并输入“{}”,我遇到了完全相同的问题,出现了完全相同的错误消息,这就修复了它。

薄兴昌
2023-03-14

错误消息是从第一个而不是第二个出现的,因为它试图解析JSON数据。您可以在您的错误的调用堆栈中标识这一点:

at Object.<anonymous> (C:\Users\Lin\Desktop\SiiNaBot\app.js:7:21)

这是在处理app.js的过程中,第7行,字符位置21,它对应于json.parse(...)方法。

然而,您的错误并不在此应用程序代码中:到目前为止,这是正常的!抱怨涉及它所使用的JSON数据文件,因此出现错误消息:“Expected end of JSON Input”(这是从parse()方法发出的错误消息)。

此外,它逐行解析您的JSON,并寻找JSON对象定义的结尾,但文件首先结束!JSON文件中的问题是什么?好的,丢失的内容被报告为错误消息的undefined,就像调用堆栈中的位置一样,:1将其标识为字符位置1处的丢失内容--也就是说,它希望在位于该行第一个字符处的光标处找到一个字符,但却遇到了标记。

storage/userdata.JSON中的JSON对象定义需要用自定义数据包含在属性中,因此,我可以非常肯定您已经省略了终止该JSON对象的定义,最后一行可能缺少的是:

}

因此,只需在userdata.json中添加最后一行就很可能解决数据输入文件的问题。(例如,请参阅此要点,并将userdata.json的内容/结构与安装程序中描述的config.json进行比较)

 类似资料:
  • 问题内容: 我目前正在尝试返回数据库调用以填充下拉框。但是,当我循环浏览返回的列表时,出现“未定义回调”错误。我已经用两种方法尝试过此代码,但都没有用。 我试过了: 我也尝试过: 两者都给我错误: TypeError:回调未定义 返回的数据对象是我必须从中拉出两部分的数据库对象的列表。 如何解决此“回调”错误,以便可以在函数中使用数据? 问题答案: 回调是在其前任完成操作并返回值后立即执行的函数。

  • 我正在尝试JNI示例代码。 (您可以通过github获得以下所有源代码:https://github.com/pilhoon/jni-test) sample.java sample.c 采样.h 我在CentOS6.3上用gcc编译了这些 但是当我运行'java sample'时,出现了一个错误。 我该怎么解决这个?

  • 我得到一个错误,当我试图运行这个简单的脚本: 假设我输入“dude”,我得到的错误是: 我正在运行MacOSX10.9.1,我正在使用安装了Python3.3的PythonLauncher应用程序来运行脚本。

  • 我第一次与Firebase合作进行一个实践项目,我很难设置用户登录其帐户的能力。 我已成功设置注册,但到目前为止,我无法登录并检查身份验证状态是否正常工作。 我在控制台中不断收到的错误是“未捕获引用错误:未定义Firebase” 我自己做了一些研究,但我似乎找到的唯一答案是,你需要包含Firebase的脚本标签,这在这里不相关,因为我已经包含了它们,或者2.4.2版本的过时响应 有关守则如下:

  • 用我的超文本标记语言,下面的代码部分 在控制台上生成以下错误: 未捕获引用错误:未定义WEBGL 我已经导入了所有必要的js,所以问题是:如何解决这个问题?

  • 问题内容: 我正在学习python并出现此错误。我可以找出错误在哪里什么在代码中。 , 。 当我运行程序 它输出你叫什么名字?(我输入d) 这给出了错误 这是来自Python 3的Absolute Beginners的示例代码。 问题答案: 在Python 2.x中,期望的是Python表达式,这意味着如果你键入d它,它将把它解释为名为d 的变量。如果你输入,那就可以了。 你可能真正想要的2.x是

  • 问题内容: 我已经为客户创建了一个页面,最初是在Chrome中工作,却忘了检查它是否在Firefox中工作。现在,我遇到了一个大问题,因为整个页面基于无法在Firefox中运行的脚本。 它基于所有具有导致隐藏和显示正确页面的“链接” 。我不明白为什么这在Firefox中不起作用。 例如,页面具有id ,依此类推。所有链接都具有以下代码: 它在Chrome和Safari中完美运行。 这是代码: 问题

  • 问题内容: 我试图在python中定义一个基本函数,但是当我运行一个简单的测试程序时,总是会收到以下错误; 这是我用于此功能的代码; 更新:我打开了名为pyth.py的脚本,然后在给出错误时在解释器中输入pyth_test(1,2)。 谢谢您的帮助。(对于这个基本问题,我深表歉意,我以前从未编程过,并且正在尝试将Python作为一种业余爱好来学习) 问题答案: 是的,但是在哪个文件中声明了定义?它