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

JS-为什么它在这里抛出错误?

简学文
2023-03-14

我正在编码一个不和谐机器人,它检查用户是否在我的不和谐服务器上,以及他是否有某个角色。然而,我得到一个错误消息,如果用户不是在我的不和,尽管使用捕捉。我有以下代码:

app.post('/', (req, res) => {
const userId = req.rawBody;

try {
    bot.guilds.fetch(guildId).then(guild => {
        guild.members.fetch(userId).then(user => {
            if (user.id == userId) {
                if (user.roles.cache.has('830811473604902912'))
                {
                    console.log('User has RoleX.');
                }
            } else{
                // Member invalid
                console.log('User is not on Discord.');
                res.send('False');
            }
        });
    });
} 
catch
{
    // Member not found or other error encountered
    console.log('User is not on Discord.');
    res.send('False');
}
});

现在,错误消息是:

(节点: 15184)UnhandledPromiseRejtionWarning: DiscordAPIError:未知成员在请求Handler.execute(c:\用户\用户\桌面\DiscordBot\MyBot\node_modules\discord.js\src\rest\请求Handler.js:154: 13)在异步请求Handler.push(c:\用户\用户\桌面\DiscordBot\MyBot\node_modules\discord.js\src\rest\recestHandler.js:39: 14)(使用节点--跟踪警告...显示警告是在哪里创建的)

(节点:15184)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请使用CLI标志--unhandled rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)(拒绝id:1)

(节点:15184)[DEP0018]弃用警告:未处理的promise拒绝已弃用。将来,未处理的promise拒绝将终止节点。具有非零退出代码的js进程。

它说我有一个没有catch块的异步函数,但显然有catch?

共有1个答案

单于季
2023-03-14

您有一个捕获块,但不在实际promise上。改为:

bot.guilds.fetch(guildId).then(guild => {
    return guild.members.fetch(userId).then(user => {
        if (user.id == userId) {
            if (user.roles.cache.has('830811473604902912'))
            {
                console.log('User has RoleX.');
            }
        } else{
            // Member invalid
            console.log('User is not on Discord.');
            res.send('False');
        }
    });
})
.catch((e) => {

  // Handle error here
});
 类似资料:
  • 我在网上找了很久。但没有类似的答案。请帮忙或试着给出一些想法。我刚刚开始学习CyclicBarrier,我想知道我是否误解了CyclicBarrier.Await(int timeout,TimeUnit unit)。线程0到3已经到达了花费2秒的障碍点。同时,最后一个线程在等待2秒后启动。1秒后,0到3个线程到达指定的超时,其中第4个线程仍然执行自己的代码。问题是:为什么CyclicBarrie

  • 在index.hpp中,我创建了一个具有多个数据成员的类,如、等。我在类外部定义了一个构造函数。在program.cpp中,我创建了一个名为SAM的对象。当我试图编译它时,它显示错误。什么原因? Program.cpp index.hpp 错误信息

  • 我得到而调用 Java语言lang.StackOverflowerr:org处为null。阿帕奇。平民登录中。日志适配器$Slf4jLog。isDebugEnabled(LogAdapter.java:300)~[spring-jcl-5.1.10.RELEASE.jar:5.1.10.RELEASE]位于org。springframework。安全身份验证。ProviderManager。在or

  • 我想了解为什么一段代码不会抛出NullPointerException。 请考虑以下代码: 方法被重复调用,同时以下代码在单独的线程中运行: 只有一个实例。 从不引发NullPointerException。 但是,当方法暂停时,即使暂停0毫秒,也会按预期引发NullPointerException: 我的理解是,在理论上,在检查和调用之间存在竞争条件。在实践中,如果不引入暂停(即从后续方法调用中

  • 问题内容: 以下是JSX中我的render方法的一部分-为什么在抛出错误后分号为何?在普通的JavaScript中完全可以 问题答案: 这是因为JSX 表达式仅限于单个表达式。 ..将引发错误。 但是,您可以通过使用两个表达式来解决此问题 如果只有一个表达式,则不需要分号。 如果您希望对此有所了解,可以在返回以逗号分隔的最后一个表达式之前,在表达式中使用鲜为人知的逗号运算符进行一些本地工作: 将显

  • 问题内容: 我应该开发一个简单的SFTP。 一切都进行得很好,直到我(在本例中)没有编写全部为止。可以请我解释一下,为什么系统挂在我身上吗? 服务器端: 客户端: 问题答案: 您的循环一直运行到流结束,但是对等方永远不会关闭套接字。该协议似乎要求打开套接字以供其他命令使用,因此您必须调整它的这一部分以包括一个长度字前缀,以便您知道要复制多少字节。 问题不是关于不写所有字节,而是关于阻塞in 。