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
相关产品推荐
相关产品推荐

