国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

解決koa2 ctx.render is not a function報錯問題

2019-11-19 13:19:45
字體:
供稿:網(wǎng)友

最近在學(xué)習(xí)使用koa2,在嘗試用koa2復(fù)寫之前用express寫的一個入口文件的時候發(fā)現(xiàn)命令行報錯ctx.render is not a function

 

項目路徑如下

 

app.js是之前用express寫的入口文件

koa.js是用koa2復(fù)寫的入口文件

view是前端頁面文件夾,使用的模板引擎是pug

報錯時koa.js代碼如下

//使用koa復(fù)寫入口文件const Koa = require('koa');const Router = require('koa-router');const koaBody = require('koa-body');const views = require('koa-views');const serve = require('koa-static');const app = new Koa();const router = new Router();app.use(serve(__dirname));app.use(koaBody()).use(router.routes());app.use(views(__dirname + '/views/pages',{  extension: 'pug'}))app.listen(3000);router.get('/', async(ctx, next) => {  await ctx.render("index",{    title:"nodeWeb 首頁"  })});

其實這個bug很好解決,那就是把配置模板引擎的代碼移動到所有與路由相關(guān)的代碼之前,在這里就應(yīng)該修改為

//使用koa復(fù)寫入口文件const Koa = require('koa');const Router = require('koa-router');const koaBody = require('koa-body');const views = require('koa-views');const serve = require('koa-static');const app = new Koa();const router = new Router();app.use(serve(__dirname));//配置模板引擎app.use(views(__dirname + '/views/pages',{  extension: 'pug'}))//使用koa-routerapp.use(koaBody()).use(router.routes());app.listen(3000);//設(shè)置路由router.get('/', async(ctx, next) => {  await ctx.render("index",{    title:"nodeWeb 首頁"  })});

造成這個bug的原因是因為中間件的執(zhí)行是有順序的,路由在前,然后模板引擎在后的話,當(dāng)執(zhí)行到ctx.render的時候,模板引擎相關(guān)的中間件還未執(zhí)行,render方法還未綁定到ctx上,所以就會報ctx.render is not a function

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 台州市| 曲周县| 南漳县| 山阳县| 信丰县| 綦江县| 东乡族自治县| 泰州市| 边坝县| 香河县| 龙山县| 屏南县| 永泰县| 池州市| 禹城市| 甘南县| 南京市| 东乌珠穆沁旗| 郁南县| 上犹县| 崇信县| 安泽县| 祁阳县| 石屏县| 阿勒泰市| 大邑县| 商南县| 茶陵县| 台前县| 固镇县| 根河市| 江孜县| 青冈县| 鄂温| 龙川县| 高阳县| 辽中县| 班玛县| 油尖旺区| 鲜城| 定远县|