Как я могу исправить эту ошибку обратного вызова в Node.js? - PullRequest
0 голосов
/ 10 июля 2019

Сначала я установил эту библиотеку,

> 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)

1 Ответ

0 голосов
/ 11 июля 2019

Это потому, что setAvatar() принимает только 2 параметра: avatarUrl и callback. Если вы передадите 3 параметра, второй из них будет принят за callback, и будет выброшено TypeError, если это не функция (в вашем примере 2-й параметр avatarUrl является строкой).

Пожалуйста, обратитесь к исходному коду lib/api/users.js в rocketchat-api Исходный код :

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

К сожалению, документ модуля *1015* модуля rocketchat-api неверен, что приводит к проблеме.

...