原生NodeJS实现路由遇TypeError: requestedPath is not a function错误求助
问题原因与解决方法
错误原因
你这段代码的核心问题是赋值逻辑搞反了:
- 当
router[trimmedPath]存在时(也就是有对应的处理函数),你把trimmedPath(路径字符串)赋值给了requestedPath,而不是取router[trimmedPath]对应的处理函数; - 只有路径不存在时,
requestedPath才是notFound函数。
所以当你尝试调用requestedPath()时,大部分情况是在调用一个字符串,自然会触发TypeError: requestedPath is not a function。
解决方法
把赋值逻辑改成直接获取路由对应的处理函数,不存在时 fallback 到notFound:
// 直接取router中的处理函数,没有的话用notFound let requestedHandler = router[trimmedPath] || notFound; // 然后调用这个函数 requestedHandler();
额外验证小技巧
可以在赋值后加一行打印,确认变量类型:
console.log(typeof requestedHandler);
如果输出是function就说明没问题,要是输出string,那就是还没改对。
内容的提问来源于stack exchange,提问作者mrSogib
相关产品推荐
相关产品推荐

