middleware must be a function, not undefined

middleware must be a function, not undefined

写koa项目时报了这个错误 Error: get /login: middleware must be a function, not undefined

分析:我的逻辑是将路由记录写在router里,然后按API分成若干js文件,真正完成业务逻辑的部分放在了controllers层,对应某api_controller,bug中的/login是我的一个处理登录逻辑的中间件

在app.js中 :我将路由注册:

// routes 注册路由
app.use(user.routes(), user.allowedMethods())

routes–>user.js中将路由分发:

const router = require('koa-router')()
const user_controller = require('../controllers/user_controller')
// koa-router提供一种router.prefix方法,此方法对于某一个router来说,是一个全局配置,此router的所有路径都会自动被添加该前缀。
router.prefix('/user')
router.get('/login', user_controller.login)
module.exports = router

controllers–>user_controller中具体撰写业务逻辑:

const login = async(ctx,next) => {
    const req = ctx.request.body
    ctx.body = 'this is a users/login response'
}
module.exports = {
    login
}

最初没有写module.exports = {
login
}
时就报了这个error!!!

原因及解决:的原因是routes里定义的APIrouter.get('/login', user_controller.login)和controllers里的exports没有对应上 !!!,改正过来即可

发布了46 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yuanfangyoushan/article/details/96841327