NodeJS返回Unhandled promise rejection错误

时间:2017-07-17 11:55:07

标签: node.js discord

我目前的代码是:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  console.log('I am ready!');
});

function getData(location1) {
  var getResult = "";
  request.get('https://maps.googleapis.com/... '  + location1, (err, response) => {
  ...

  return getResult;
}

client.on('message', message => {
    if (message.content === 'ping') {
      message.channel.send('pong');
    }
    else if (message.content === 'query Melbourne') {
      message.channel.send( getData('Melbourne') ) ;
    }
} );

第一个message.channel.send('pong')工作正常。但第二个message.channel.send不断返回结果:

(node:16047) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): DiscordAPIError: Cannot send an empty message
(node:16047) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

只是节点的新手所以任何指导都会受到赞赏。

----更新下面的代码仍然以同样的方式出现错误:

  var PTest = function () {
      return new Promise(function (resolve, reject) {
          message.channel.send( getData('Melbourne') ) ;
      });
  }
  var myfunc = PTest();
  myfunc.then(function () {
       console.log("Promise Resolved");
  }).catch(function () {
       console.log("Promise Rejected");
  });

1 个答案:

答案 0 :(得分:3)

您只需发送一条空消息,就像警告消息写入(node:16047) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): DiscordAPIError: Cannot send an empty message

一样

getData('Melbourne')中的函数message.channel.send( getData('Melbourne') ) ;返回空消息,拒绝承诺。因为你没有处理Promise拒绝,所以node.js会在控制台上写下警告来通知你这种情况,以防止一些潜在的异常情况发生,通过忽略句柄拒绝拒绝。

要处理承诺拒绝,请为此.catch函数

调用send方法

在更新后的代码中,您可以创建自己的承诺

return new Promise(function (resolve, reject) {
      message.channel.send( getData('Melbourne') ) ;
  });

message.channel.send方法返回的Promise仍未处理。你应该写message.channel.send().catch(err => console.log(err));