koa2报错TypeError: ctx.render is not a function
12 回复
各位大神们帮帮忙 😢
代码并没错,你环境有问题吧
@JustforNode 环境是这样的
安装koa-views
@i5ting 是的 已经安装了 但是还是不行
试试 await this.render('index')
呢
你装的koa-router
和koa-views
是匹配koa 1.x
的,装下针对v2.x的吧。
npm install koa@next koa-router@next koa-views@next --save
@hellopao 沃日 确实是 是koa-router 版本的问题 ; 多谢 指导; 谢谢您 ;
@azathothes 问题已经解决了 , 谢谢您 ;
模板引擎版本不对,所以没有对应的render方法绑定到context上
@DevinXian 经过测试 应该不是 模板引擎的问题 应该是koa-router 版本的问题 谢谢你的回答
我这次碰到同样问题,希望给大家个帮助: 原因是:我把
app.use(views(__dirname + '/server/views', {
extension: 'ejs',
}));
放在某些get,post路由后面了! 理由: 由于koa-views中间件结构
module.exports = viewsMiddleware
function viewsMiddleware (path, ref) {
return function views (ctx, next) {
if (ctx.render) return next();
ctx.render = function (relPath, locals) {
//some code
}
}
}
先get,post路由处理,然后再处理返回的views函数的话,因为那时还没有添加这个方法 所以报出了出现的ctx.render is not function问题。 不知道为神马写成中间件,而不是采用写成类似express的render方法挂在app.response原型而把render挂在ctx的原型上的方案。