Я пытался добавить маршрутизацию к своему ванильному 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, но, похоже, ничто не похоже на мою ситуацию.
Любая помощь