koa2报错TypeError: ctx.render is not a function
12 回复
你装的koa-router和koa-views是匹配koa 1.x的,装下针对v2.x的吧。
npm install koa@next koa-router@next koa-views@next --save
我这次碰到同样问题,希望给大家个帮助: 原因是:我把
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的原型上的方案。