用koa写项目后台遇到的bug及解决

用koa写项目后台遇到的bug及解决

  • import,exports使用ES6规范时,项目运行会报错:

    原因:是因为目前 NodeJs 只支持部分 ES6 的语法,有些 ES6 的语法还不支持,而 import 语法就是其中之一

    解决: 改为CommonJs 的语法格式,诸如:const Koa = require('koa') module.exports = app

  • 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没有对应上 !!!

  • port 3000 is already in use的一种可能原因:

    问题在于重复起调同一个端口,有的人的写法是在app.js中写app.listen(...),有的人会独立建立一个js来描述端口的事宜,如:

    www.js:

    #!/usr/bin/env node
    
    /**
     * Module dependencies.
     */
    
    var app = require('../app')
    var debug = require('debug')('demo:server')
    var http = require(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值