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

Express中app.use()报错:需传入中间件函数的问题求助

解决 TypeError: app.use() requires a middleware function 错误

你遇到的问题核心很清晰——当前项目的routes.js没有把定义好的路由实例导出,导致app.use(routes)时,routes不是一个有效的Express中间件函数。

问题根源

在你当前项目的routes.js里,你创建了express.Router()的实例router,但没有将它导出给主文件使用。而另一项目能正常运行,本质是因为它的routes.js包含了导出语句,让require("./routes")能拿到有效的路由中间件。

修复方案

修改你的routes.js,在文件末尾添加导出语句即可:

var express = require("express"); 
var router = express.Router(); 

router.get("/signup",function(request,response){ 
  response.sendFile(__dirname + "/Client/HTML/signup.html"); 
}); 

router.post("/signup",function(request,response){ }); 

router.get("/login",function(request,response){ 
  response.sendFile(__dirname + "/Client/HTML/login.html"); 
});

// 新增这一行,导出路由实例
module.exports = router;

为什么另一项目能正常工作?

另一项目的routes.js必然包含了类似module.exports = router;的代码,当主文件通过require("./routes")引入时,拿到的是一个符合Express要求的路由中间件,所以app.use(routes)能正常执行。

额外小贴士

  • 你也可以用更简洁的ES6风格导出,比如exports.router = router;,但module.exports = router;是这种场景下的标准写法。
  • 确认文件路径无误后,导出就是解决这个错误的关键,你的路径引用已经没问题了,所以只需补全导出步骤。

内容的提问来源于stack exchange,提问作者Seth Wheeler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:19:15