如何修复 repl.it 中未处理的promiserejection。我所说的错误“无法读取 q 的属性”

Posted

技术标签:

【中文标题】如何修复 repl.it 中未处理的promiserejection。我所说的错误“无法读取 q 的属性”【英文标题】:How to fix an unhandledpromiserejection in repl.it. The error I had said "cannot read the property of q" 【发布时间】:2021-09-02 12:46:48 【问题描述】:

我正在关注 YT 的教程,这里是链接 https://www.youtube.com/watch?v=7rU_KyudGBY&t=726s 来创建一个不和谐的机器人。但是我有一个错误,我不知道如何解决。它说“无法读取 q 的属性”。我的代码中唯一的 q 在 getQuote 函数中。我想要做的是,当我输入 $inspire 时,机器人会给出一个鼓舞人心的报价。但是当我这样做时,它会给出错误“无法读取 q 的属性”以及“

const Discord = require("discord.js")

const fetch = require("node-fetch")

const client = new Discord.Client()

const mySecret = process.env['TOKEN']

function getQuote() 
  return fetch("https://zenquotes.io/api/random")
.then(res => 
  return res.json
)
.then(data => 
  return data[0]["q"] + " -" + data[0]["a"]
)


client.on('ready', () => 
  console.log(`Logged in as $client.user.tag!`)
)

client.on("message", msg => 
  if(msg.content === "ping")  
    msg.reply("pong")
  
)

client.on("message", msg => 
  if(msg.author.bot)return

  if(msg.content === "$inspire") 
    getQuote().then(quote => msg.channel.send(quote))
  
)

client.login(process.env.TOKEN)

它有点过时了(它是在 2021 年 3 月 8 日制作的)。我在 repl 中对此进行了编码。关于它如何工作的任何想法?提前致谢

【问题讨论】:

【参考方案1】:

unhandledPromiseRejection 错误发生在你不“处理” Promise 被拒绝的情况下。这意味着您应该查看您的代码以找到 Promise 的实现,并确保您处理失败的情况 - 对于 Promises,这通常意味着在链中实现 catchfinally 情况。

查看您的代码,很可能因为您在fetch 调用中没有catching 潜在错误。

function getQuote() 
  return fetch("https://zenquotes.io/api/random")
    .then(res => 
      return res.json() // <- careful here too.. `json()` is a method.
    )
    .then(data => 
      return data[0]["q"] + " -" + data[0]["a"]
    )
    
    // +
    .catch((error) => 
      // Catch errors :)
    );

【讨论】:

我对 .catch() 进行了更多研究,我不得不将函数名放在 .catch 之前。但是当我输入 getQuote 时,它​​说 getQuote.catch 不是一个函数。其他一切都好的话。对于捕获错误部分,我只是把``console.error(error)`` 任何想法如何解决这个问题? 我很笨,我忘了把 .catch() 放在 get quote 函数中 你不傻!斗争是学习的一部分。掌握的很大一部分来自于理解做什么。

以上是关于如何修复 repl.it 中未处理的promiserejection。我所说的错误“无法读取 q 的属性”的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像上传到 repl.it

python 由HiKat1创建的sdm0718批处理 - https://repl.it/Jfa6/15

在repl.it中,我如何添加一个链接到pdf?

在 repl.it 上保持 Discord Bot 在线

Mongoose 1.0.2 未连接到 repl.it

如何修复'TypeError:无法读取 Javascript 中未定义的属性'标题'