我如何修复 Node.js 中的此回调错误?

How can i fix this call back error in Node.js?

起初,我安装了这个库,

> npm install rocketchat-api

然后我 运行 使用此代码 rocket.chat REST API

// Node.js code
const RocketChatApi = require('rocketchat-api');
const result='https://rocket.chat/docs/developer-guides/rest-api/users/setavatar';
const userId='A user id';
const avatarUrl='http://www.coca.ir/wp-content/uploads/2017/05/flowers-love-profile-pictures-1.jpg'
const rocketChatClient = new RocketChatApi(
  'https',
  'rocket.chat',
  443,
  'username',
  'password',
  (err, result)=>{
    console.info('RC connected', result)
});
rocketChatClient.users.setAvatar(userId, avatarUrl, (err, body)=>{
});

在 Node.js 中 运行 之后,出现以下错误,有人可以帮助我吗?

\node_modules\rocketchat-api\lib\net.js:144
                    return callback ? callback(error, null) : reject(error);
                                      ^

TypeError: callback is not a function
    at Request.clientRequest [as _callback] (D:\node js projects\rocketTest\node_modules\rocketchat-api\lib\net.js:144:39)
    at self.callback (D:\node js projects\rocketTest\node_modules\request\request.js:185:22)
    at Request.emit (events.js:198:13)
    at ClientRequest.<anonymous> (D:\node js projects\rocketTest\node_modules\request\request.js:819:16)
    at Object.onceWrapper (events.js:286:20)
    at ClientRequest.emit (events.js:198:13)
    at TLSSocket.emitRequestTimeout (_http_client.js:662:40)
    at Object.onceWrapper (events.js:286:20)
    at TLSSocket.emit (events.js:198:13)
    at TLSSocket.Socket._onTimeout (net.js:442:8)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10)

那是因为setAvatar()只接受2个参数:avatarUrlcallback。如果你传递 3 个参数,它会将第二个参数作为 callback,如果它不是函数则抛出 TypeError(在你的示例中,第二个参数 avatarUrl 是一个字符串)。

请参考rocketchat-api中lib/api/users.js的源码 source code:

setAvatar (avatarUrl, callback) {
    return this.client.request("POST", "users.setAvatar", {
        avatarUrl
    }, callback);
}

不幸的是,rocketchat-api模块的document不正确,导致了问题。