Express.js中app.use()中间件函数错误,无法启动Node服务
解决
TypeError: app.use() requires a middleware function 错误 从你的错误信息和代码来看,直接触发这个报错的是会话中间件的引入错误,下面是具体的排查和修复步骤:
1. 修正Session依赖的导入与安装
你代码里写的是:
const session = require('express-sessions');
但Express官方推荐的会话中间件包名是express-session(单数形式),express-sessions是一个小众第三方包,它的导出格式不符合Express对中间件的要求,这就导致你调用app.use(session(...))时传入的不是合法的中间件函数,从而抛出错误。
具体修复操作:
- 先卸载错误的依赖包:
npm uninstall express-sessions
- 安装正确的官方包:
npm install express-session
- 修改代码中的导入语句:
const session = require('express-session');
2. 补充未启用的依赖配置(可选但推荐)
你代码里引入了expressValidator、flash、passport这些依赖,但没有添加对应的app.use()调用,虽然这不是当前报错的原因,但后续使用这些功能时会出现问题,建议补充以下配置:
// Express Validator 中间件 app.use(expressValidator()); // Connect Flash 中间件 app.use(flash()); // Passport 初始化 app.use(passport.initialize()); app.use(passport.session());
3. 验证修复结果
修改完成后,重新启动你的Node应用:
node app.js
如果没有其他隐藏问题,服务器应该能正常启动在3000端口。
内容的提问来源于stack exchange,提问作者Mohsin
相关产品推荐
相关产品推荐

