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

Express代码报错‘next is not a function’的原因及解决求助

错误原因及解决方法:Express中‘next is not a function’

错误原因

你直接执行了middleware()函数调用,但中间件的req、res、next参数是由Express框架在路由匹配或全局中间件执行时自动传入的。手动调用middleware()时没有传递任何参数,导致next为undefined,因此抛出‘next is not a function’错误。

解决方法

根据你的需求,有两种修正方式:

方式一:仅在指定路由使用该中间件

直接删除手动调用的middleware()行即可,你已经在/about路由中配置了该中间件,Express会在访问该路由时自动执行它并传入正确参数。

修正后的代码:

const express=require('express');
const app=express()

//middleware
const middleware=(req,res,next)=>{
    console.log('this is just a middleware in console');
    next();
}
app.get('/about',middleware,(req,res)=>{
    res.send('hi this is about');
    console.log('about in console');

})

app.listen(3000,()=>{
    console.log('hi');
})

方式二:全局应用该中间件

如果想让这个中间件对所有路由生效,不要手动调用middleware(),改用Express的app.use()方法注册全局中间件:

const express=require('express');
const app=express()

//middleware
const middleware=(req,res,next)=>{
    console.log('this is just a middleware in console');
    next();
}
app.use(middleware)
app.get('/about',(req,res)=>{
    res.send('hi this is about');
    console.log('about in console');

})

app.listen(3000,()=>{
    console.log('hi');
})

内容的提问来源于stack exchange,提问作者CALLOFDUTY SUPERHEROES

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:25:21