【问题标题】:Why am I getting error "UnhandledPromiseRejectionWarning" when running my code?为什么我在运行代码时收到错误“UnhandledPromiseRejectionWarning”?
【发布时间】:2019-05-04 05:17:24
【问题描述】:

我正在尝试使用 node.js discord 模块来制作一个机器人,该机器人将在输入不和谐的命令时向用户发送私人消息。该命令应该像

一样使用

!rp

并且邮件被传递给收件人。

我的代码是:

else if (rhysmessage.substring(0,4) == ("!rp ")) {
e.message.delete();
var end
var charactercheck
for (end=0; charactercheck < rhysmessage.length; charactercheck = 
charactercheck + 1) {
  console.log(rhysmessage.charAt(charactercheck))
  if (rhysmessage.charAt(charactercheck) == " ") {
    end = charactercheck}
}
if (end == 0){
  rhyschannel.sendMessage("Please use format `!rp <recipient> 
<message>`")
}
else {
  usersendto = rhysmessage.substring(5,end-1)   
usersendto.sendMessage(rhysmessage.substring(end+1,rhysmessage.leng
th)
    }
   }

当我运行此代码时,我收到错误:“UnhandledPromiseRejectionWarning”。这是为什么呢?

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    有关未处理的承诺拒绝的信息,请参阅 here

    说明:
    某些方法(即Discord.js 内的send())返回promises。引用自 MDN...

    Promise 对象表示异步操作的最终完成(或失败)及其结果值。

    换句话说,有些功能必须等待某事完成。当出现错误时,promise 被拒绝,你必须处理它。您看到的警告是由于您的代码没有捕获任何被拒绝的承诺。

    解决方案:
    实现使用.catch() 方法或try...catch 语句来处理任何错误。

    await channel.send('hey')
    .catch(err => console.error(err));
    
    try {
      await channel.send('hey');
      await user.send('hey again');
    } catch(err) {
      console.error(err);
    }
    

    请注意,尽管在上面的示例中,错误会发送到控制台,但它不会停止您的代码。确保正确处理它,以便任何进一步的代码都不会出错。此外,要使用await,您必须在异步函数中。

    // sendMessage() 在 Discord.js 中已弃用。请改用send()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2017-10-20
      • 2012-05-31
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      相关资源
      最近更新 更多