Ошибка типа: mitsukuApi.send не является функцией

1

Я пытаюсь использовать API-интерфейс mitsuku chatbot и тестирую следующее.

var m = require("mitsuku-api")

m.send('hello world')
  .then(function(response){
    console.log(response);
  });

Я работаю над консолью ubuntu и установил nodejs и npm. Но я сталкиваюсь со следующей ошибкой, когда я пытаюсь запустить выше.

/home/manuelanayantarajeyaraj/node_modules/mitsuku-api/mitsukutest.js:3 mitsukuApi.send('hello world') ^

TypeError: mitsukuApi.send не является функцией объекта. (/Home/manuelanayantarajeyaraj/node_modules/mitsuku-api/mitsukutest.js:3:12)
на Module._compile (module.js: 410: 26)
в Object.Module._extensions..js(module.js: 417: 10)
на Module.load(module.js: 344: 32)
в Function.Module._load (module.js: 301:12)
в Function.Module.runMain(module.js: 442: 10)
при запуске (node.js: 136: 18)
на узле.js: 966: 3

Файл mitsuku.js

'use strict';

var Promise = require('bluebird'),
    cheerio = require('cheerio'),
    superagent = require('superagent');

var ENDPOINT_CHAT_MITSUKU = 'https://kakko.pandorabots.com/pandora/talk?botid=87437a824e345a0d&skin=chat',
    MESSAGE_REGEX = /(Mitsuku -(.*))/,
    MESSAGE_REJECT_REGEX = /(x(.*)x[^\s]+)|(\|)|(BYESPLIT X1234)/ig,
    MESSAGE_SENDER_TAG = 'You -';

function getRawHtmlForMessage(mitsuku, message) {
    return new Promise(function (resolve, reject) {
        if (!mitsuku) {
            return reject(new Error('Mitsuku cannot be null'));
        }
        if (!message) {
            return reject(new Error('Message cannot be null or empty'));
        }

        var agent = mitsuku._agent,
            endpoint = mitsuku._endpoint,
            req;

        req = agent.post(endpoint);
        agent.attachCookies(req);
        req.set('Content-Type', 'application/x-www-form-urlencoded')
            .send({ message: message })
            .end(function (err, res) {
                if (err) {
                    return reject(err);
                }
                agent.saveCookies(res);
                resolve(res.text);
            });
    });
}

function parseMessageFromHtml(html) {
    var conv = cheerio.load(html)('body')
        .find('p')
        .text()
        .trim();

    var match = MESSAGE_REGEX.exec(conv),
        message,
        prevMessageStart;

    if (match && match.length > 0) {
        message = match[match.length - 1];
        prevMessageStart = message.indexOf(MESSAGE_SENDER_TAG);
        if (prevMessageStart != -1) {
            message = message.substr(0, prevMessageStart);
        }
        return message.replace(MESSAGE_REJECT_REGEX, '').trim();
    } else {
        throw new Error("Could not parse Mitsuku response");
    }
}

/**
 * Create new Mitsuku API for the given options.
 *
 * @param options
 * @constructor
 */
function Mitsuku(options) {
    options = options || {};
    this._tag = options.tag || 'Anonymous';
    this._agent = superagent.agent();
    this._endpoint = options.endpoint || ENDPOINT_CHAT_MITSUKU;
}

/**
 * Send a message to this {@link Mitsuku} instance.
 *
 * @param message
 * @return bluebird message response promise
 */
Mitsuku.prototype.send = function(message) {
    return getRawHtmlForMessage(this, message)
        .then(parseMessageFromHtml)
};

/**
 * Get the tag this {@link Mitsuku} was setup with.
 *
 * @returns {*|string}
 */
Mitsuku.prototype.getTag = function() {
    return '' + this._tag;
};

/**
 * Describe this {@link Mitsuku} instance.
 *
 * @returns {*|string}
 */
Mitsuku.prototype.toString = function() {
    return this.getTag();
};

/**
 * Mitsuku API module
 * @module lib/mitsuku
 */

/**
 * Create new instance of {@link Mitsuku} for the given options.
 *
 * @param options
 * @returns {Mitsuku}
 */
module.exports = function newInstance(options) {
    return new Mitsuku(options);
};

Любая помощь в этом отношении будет высоко оценена.

Теги:
function
typeerror

2 ответа

5

Я разработчик Mitsuku и перестала работать с вашим кодом. Нехорошо пилить других людей, не спрашивая их в первую очередь.

Я бы подумал, что уведомление "прекратить и воздержаться", которое мы разместили в репозитории Github, достаточно объяснило бы это: https://github.com/eleventigers/mitsuku-api/issues/11

Если вы хотите использовать Mitsuku в своей работе, свяжитесь со мной по адресу [email protected], и мы можем обсудить цены.

  • 0
    Привет, Стив, я не хотел сказать, что с Мицуку что-то не так, но просто не мог понять, как заставить его работать. Кроме того, я большой поклонник Mitsuku и не пользуюсь им профессионально, поэтому надеюсь, что все в порядке. Извините, если это вышло не в том смысле.
2

Основываясь на вашем mitsuku.js, поскольку вы экспортируете его как функцию, вам нужно добавить круглые скобки () в инструкции require.

const m = require('./mitsuku')(); // parentheses added
  • 0
    Большое спасибо за ответ. Но я получил следующую ошибку, когда я изменил JS, как показано на рисунке. Unhandled rejection Error: Could not parse Mitsuku response at parseMessageFromHtml (/home/manuelanayantarajeyaraj/node_modules/mitsuku-api/lib/mitsuku.js:57:15) ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню