Ошибка типа: «x» не является функцией в node js - PullRequest
0 голосов
/ 22 апреля 2020

Я пытался добавить маршрутизацию к своему ванильному node.js серверу и наткнулся на проблему.
В основном у меня есть класс маршрутизатора, который имеет атрибут объекта, в котором хранятся все маршруты и их соответствующие обработчики и метод под названием route, который принимает запрос и ответ в качестве параметров и вызывает обработчик для текущего req.url и req.method.
Проблема в том, что я получаю сообщение об ошибке, в котором говорится, что мой обработчик не является функцией , С исходным кодом, вероятно, все будет яснее:

    getHandler(method, url) {
        let identifier = this.constructIdentifier(method, url);
        if (!this.endPoints[identifier]) {
            return new Error("Endpoint not registered!");
        }

        let handler = this.endPoints[identifier];

        if (!handler) {
            throw new Error("Handler null!");
        }
        console.log(handler)
        return handler;
    }

Я проверил, используя typeof, и возвращенный обработчик действительно является функцией.
Маршрут сейчас:

    route(req, res) {
        try {
            let reqUrlString = req.url.split('?')[0];
            let pathName = urlModule.parse(reqUrlString, true, false).pathname;
            let method = req.method;
            let handlerFunction = this.getHandler(method, pathName);
            console.log("TYPE OF HANDLERFUNCTION",typeof handlerFunction);
            handlerFunction(req,res);
        } catch (err) {
            console.log(err);
        }
    }

Сейчас Здесь возникает проблема. Когда я проверяю свой маршрут в почтальоне, все идет гладко, но когда я пробую его в браузере, я получаю следующую ошибку и вывод:
TYPE OF HANDLERFUNCTION function TYPE OF HANDLERFUNCTION object TypeError: handlerFunction не является функцией (функция все еще выполняется и я получаю результаты в окне браузера, но я не могу избавиться от ошибки) Ошибка происходит из строки, вызывающей функцию обработчика. Я искал в Интернете решения этой ошибки и похожие вопросы по stackoverflow, но, похоже, ничто не похоже на мою ситуацию.
Любая помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...