TypeError:“ x”不是节点js中的函数

时间:2020-04-22 15:10:02

标签: node.js url-routing typeerror

我一直在尝试向我的普通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);
        }
    }

现在这是问题所在。当我在邮递员中测试路线时,一切顺利,但是当我在浏览器中尝试时,出现以下错误并输出:
HANDLERFUNCTION函数的类型 HANDLERFUNCTION对象的类型 TypeError:handlerFunction不是函数 (该功能仍会执行,并且我会在浏览器窗口中获得结果,但无法消除错误) 错误来自调用处理程序函数的行。我一直在网上寻找此错误的解决方案以及关于stackoverflow的类似问题,但似乎没有什么比我的情况好。
任何帮助

0 个答案:

没有答案