You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

原生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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:22:03