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

Express中app.use()提示需中间件函数的错误修复咨询

修复Express中“app.use() requires a middleware function”错误

以下是你提供的后端API代码:

//imports
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const errors = require('./middleware/errors');

//static port for run server
const PORT = 3000;

//mongo connection
mongoose
.connect('mongodb+srv://devkeyurkasvala:@cluster0.xqdxmvf.mongodb.net/?retryWrites=true&w=majority')
.then(() => {
  console.log('Connected to Database Successfully');
})
.catch((e) => {
    console.log('Error connecting to MongoDB', e);
});

//getting error here for app use function please help me with this its my proper code
app.use(express.json());
app.use("/api", require("./routes/app.routes"));
app.use(errors.errorHandler);

//connecting server
app.listen(PORT, "0.0.0.0", () => {
    console.log(`Server listening on port: ${PORT}`);
}); 

你在本地运行Flutter应用的后端API时遇到错误提示“app.use() requires a middleware function”,修复方案如下:

错误核心原因

该错误是因为app.use()接收的参数并非合法的Express中间件函数或路由对象,重点排查以下两处:


1. 修复路由文件导出问题

打开./routes/app.routes.js,确保文件正确导出Express Router实例,示例代码:

const express = require('express');
const router = express.Router();

// 示例路由定义
router.get('/test', (req, res) => {
  res.json({ status: 'success' });
});

// 必须导出router对象
module.exports = router;

若该文件导出的是普通对象、undefined或非Router实例,会直接触发错误。

2. 修复错误处理中间件定义

打开./middleware/errors.js,确保errorHandler是符合Express规范的错误处理中间件(必须包含err, req, res, next四个参数),示例代码:

exports.errorHandler = (err, req, res, next) => {
  const statusCode = err.statusCode || 500;
  res.status(statusCode).json({
    message: err.message || '服务器内部错误',
    stack: process.env.NODE_ENV === 'production' ? '😶' : err.stack
  });
};

若errorHandler未定义为四参数函数,或导出的不是函数,也会引发该错误。

3. 额外检查项

  • 确认所有require的文件路径无拼写错误,避免因导入不存在的文件返回undefined;
  • 你的MongoDB连接字符串中密码部分为空(devkeyurkasvala:@cluster0...),建议补充正确密码,否则会导致数据库连接失败。

内容的提问来源于stack exchange,提问作者keyur kasvala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:00:18