解决koa2 ctx。呈现并不是一个函数报错问题

  

最近在学习使用koa2,在尝试用koa2复写之前用表达写的一个入口文件的时候发现命令行报错ctx。呈现并不是一个函数
  

  

解决koa2 ctx。呈现并不是一个函数报错问题”>,<br/>
  </p>
  <p>项目路径如下<br/>
  </p>
  <p> <img src=//使用洋槐复写入口文件   const高雅=要求(“高雅”);   const路由器=要求(“koa-router”);   const koaBody=要求(“koa-body”);   const观点=要求(“koa-views”);   const=服务要求(“koa-static”);      const应用=new高雅();   const路由器=new路由器();      app.use(服务(__dirname));   app.use (koaBody ()) .use (router.routes ());   app.use(视图(__dirname +/视图/页,{   扩展:“哈巴狗”   }))      app.listen (3000);      路由器。get('/',异步(ctx,)=比;{   等待ctx.render(“指数”,{   标题:“nodeWeb首页”   })   });      

其实这个bug很好解决,那就是把配置模板引擎的代码移动到所有与路由相关的代码之前,在这里就应该修改为

     //使用洋槐复写入口文件   const高雅=要求(“高雅”);   const路由器=要求(“koa-router”);   const koaBody=要求(“koa-body”);   const观点=要求(“koa-views”);   const=服务要求(“koa-static”);      const应用=new高雅();   const路由器=new路由器();      app.use(服务(__dirname));//配置模板引擎   app.use(视图(__dirname +/视图/页,{   扩展:“哈巴狗”   }))//使用koa-router   app.use (koaBody ()) .use (router.routes ());      app.listen (3000);//设置路由   路由器。get('/',异步(ctx,)=比;{   等待ctx.render(“指数”,{   标题:“nodeWeb首页”   })   });      

造成这个bug的原因是因为中间件的执行是有顺序的,路由在前,然后模板引擎在后的话,当执行到ctx.render的时候,模板引擎相关的中间件还未执行,渲染方法还未绑定到ctx上,所以就会报ctx。

渲染不是一个函数   

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

解决koa2 ctx。呈现并不是一个函数报错问题