解决koa2 ctx.render的问题不是一个报告错误的函数
最近,在学习使用koa2时,我发现命令行报告了一个错误ctx.render在试图复制用koa2在express中编写的条目文件时不是一个函数。
项目路径如下
App.js是以前用express写的入口文件
Koa.js是一个用koa2复制的条目文档
视图是首页文件夹,使用的模板引擎是pug
报告错误时koa.js的代码如下
//使用koa复制入口文件const Koa=require(' Koa ');const Router=require(' KOA-Router ');const Koabody=require(' KOA-body ');const view=require(' KOA-view ');const serve=require(' KOA-static ');const app=new Koa();const Router=new Router();app . use(serve(_ _ dirname));app.use(koaBody())。使用(router . routes());app . use(view(_ dirname/' view/pages ',{ extension : ' pug ' }))app . listen(3000);Router.get ('/',async (CTX,下一个)={await CTX.render ('index ',{ title : ' node web home page ' })});其实这个bug很容易解决,就是把配置模板引擎的代码移到所有与路由相关的代码之前,就应该修改为
//使用koa复制入口文件const Koa=require(' Koa ');const Router=require(' KOA-Router ');const Koabody=require(' KOA-body ');const view=require(' KOA-view ');const serve=require(' KOA-static ');const app=new Koa();const Router=new Router();app . use(serve(_ _ dirname));//配置模板引擎app . use(view(_ dirname/' view/pages ',{ extension : ' pug ' })//使用KOA-routerapp.use (koabody())。使用(router . routes());app . listen(3000);//设置路由路由器. get ('/',async (CTX,下一个)={awaitctx.render ('index ',{ title : ' node web home page ' })});这个bug的原因是中间件是按顺序执行的,路由在前,模板引擎在后。当与模板引擎相关的中间件被执行到ctx.render时,render方法并没有绑定到ctx,所以ctx。渲染不是将被报告的功能
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:解决koa2 ctx.render的问题不是一个报告错误的函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。