【问题标题】:Unexpected token o意外的令牌o
【发布时间】:2019-12-10 02:02:53
【问题描述】:

我正在添加一个api来检查多个mcpe服务器是否在线并在一条消息中发送

我尝试在单个消息中执行此操作,并且一切正常

'test': async (msg) => {
  request("https://api.mcsrvstat.us/2/mcfcraft.xyz", function(errHub, responseHub, statusHub) {
    const bodyHub = JSON.parse(responseHub)
    request("https://api.mcsrvstat.us/2/173.249.34.88:25879", function(errFac, responseFac, statusFac) {
      const bodyFac = JSON.parse(responseFac)

      let embed = new Discord.RichEmbed()
      .setTitle("Server status response")
      .setColor("PURPLE")
      .setDescription("Requested response from our network.")
      if(bodyHub.online === true)  {
        embed.addField("Server: HUB", `Server status: Online\nPlayers: ${bodyHub.players.online}/${bodyHub.players.max}\nMOTD: ${bodyHub.motd.raw}`)
      } else {
        embed.addField("Server: HUB", `Server status: Offline\nPlayers: 0/0\nMOTD: N/A`)
      }

      if(bodyFac.online === true) {
        embed.addField("Server: FACTIONS", `Server status: Online\nPlayers: ${bodyFac.players.online}/${bodyFac.players.max}\nMOTD: ${bodyFac.motd.raw}`)
      } else {
        embed.addField("Server: FACTIONS", `Server status: Offline\nPlayers: 0/0\nMOTD: N/A`)
      }

      msg.channel.send(embed)

    })
  })
}

未定义:1 [对象对象] ^

SyntaxError: JSON 中位置 1 的意外标记 o 在 JSON.parse() 在 Request._callback (C:\Users\Gaming Account\Desktop\McfBots\ServerStatus.js:258:28) 在 Request.self.callback (C:\Users\Gaming Account\Desktop\node_modules\request\request.js:185:22) 在 Request.emit (events.js:197:13) 在请求。 (C:\Users\Gaming Account\Desktop\node_modules\request\request.js:1161:10) 在 Request.emit (events.js:197:13) 在传入消息。 (C:\Users\Gaming Account\Desktop\node_modules\request\request.js:1083:12) 在 Object.onceWrapper (events.js:285:13) 在 IncomingMessage.emit (events.js:202:15) 在 endReadableNT (_stream_readable.js:1132:12)

【问题讨论】:

  • 你的结果已经是一个对象,你不需要JSON.parse它。
  • @str 当我放 responseFac.body.online 时它​​会出现未定义
  • @str 即使我删除了解析

标签: node.js json discord.js


【解决方案1】:

您的响应已经是一个对象,因此无需再次解析它。尝试这样做:

const bodyHub = typeof responseHub === 'string' ? JSON.parse(responseHub) : responseHub;
...
const bodyFac = typeof responseFac === 'string' ? JSON.parse(responseFac) : responseFac;

这样,只有当它是一个字符串时才会解析结果。

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 2011-05-04
    • 2015-10-27
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2013-03-15
    相关资源
    最近更新 更多