Javascript 无法在promise中捕获未处理的PromisejectionWarning

Javascript 无法在promise中捕获未处理的PromisejectionWarning,javascript,node.js,discord,Javascript,Node.js,Discord,所以我试图在我的承诺中捕捉未处理的PromiserEjectionWarning,但由于某些原因,它不起作用。它忽略我的代码,只将错误输出到控制台 错误: 未处理的PromisejectionWarning:未处理的承诺拒绝 (拒绝id:1):错误:禁止(无法向此服务器发送消息) (用户) 代码: 这是一个使用Discordi的discord机器人。在我看来,上面的代码应该通过私有消息将单词“test”发送给消息作者,如果bot不能,它将在他们发送消息的通道中发送错误和单词test。但是,第二部

所以我试图在我的承诺中捕捉未处理的PromiserEjectionWarning,但由于某些原因,它不起作用。它忽略我的代码,只将错误输出到控制台

错误:

未处理的PromisejectionWarning:未处理的承诺拒绝 (拒绝id:1):错误:禁止(无法向此服务器发送消息) (用户)

代码:

这是一个使用Discordi的discord机器人。在我看来,上面的代码应该通过私有消息将单词“test”发送给消息作者,如果bot不能,它将在他们发送消息的通道中发送错误和单词test。但是,第二部分(在catch中)不会执行。

tl;dr,上面代码中的捕获不起作用,如果bot没有权限对用户进行dm,我会在控制台中得到上面的错误。

您忘记了
函数中的
return
语句。 我想
message.sendMessage('test')
返回一个承诺

e.message.author.openDM().then((message) => {
    return message.sendMessage(`test`);
}).catch((error) => {
    e.message.channel.sendMessage(error + "test");
});

您忘记了
then
函数中的
return
语句。 我想
message.sendMessage('test')
返回一个承诺

e.message.author.openDM().then((message) => {
    return message.sendMessage(`test`);
}).catch((error) => {
    e.message.channel.sendMessage(error + "test");
});