CNode

koa2报错TypeError: ctx.render is not a function

问答
Ffeivorid发布于10 年前最后回复9 年前12 回复11469 浏览0 收藏

小弟刚学习koa2 想自己写一个简单的小例子 结果遇到如下问

untitled1.png

代码地址: 代码地址

希望各位大大帮忙看一下 我查了好多资料也没找到解决问题的办法;

查看回复

回复 (12)

F
feivorid#1·10 年前

各位大神们帮帮忙 😢

J
JustforNode#2·10 年前

代码并没错,你环境有问题吧

F
feivorid#3·10 年前
引用 JustforNode代码并没错,你环境有问题吧

@JustforNode 环境是这样的 untitled2.png

I
i5ting#4·10 年前

安装koa-views

F
feivorid#5·10 年前
引用 i5ting安装koa views

@i5ting 是的 已经安装了 但是还是不行

A
azathothes#6·10 年前

试试 await this.render('index')

H
hellopao#7·10 年前

你装的koa-routerkoa-views是匹配koa 1.x的,装下针对v2.x的吧。

npm install koa@next koa-router@next koa-views@next --save
F
feivorid#8·10 年前
引用 hellopao你装的koa router和koa views是匹配koa 1.x的,装下针对v2.x的吧。

@hellopao 沃日 确实是 是koa-router 版本的问题 ; 多谢 指导; 谢谢您 ;

F
feivorid#9·10 年前
引用 azathothes试试 呢

@azathothes 问题已经解决了 , 谢谢您 ;

D
DevinXian#10·10 年前

模板引擎版本不对,所以没有对应的render方法绑定到context上

F
feivorid#11·10 年前
引用 DevinXian模板引擎版本不对,所以没有对应的render方法绑定到context上

@DevinXian 经过测试 应该不是 模板引擎的问题 应该是koa-router 版本的问题 谢谢你的回答

X
x373241884y#12·9 年前

我这次碰到同样问题,希望给大家个帮助: 原因是:我把

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的原型上的方案。

参与回复
登录后即可参与回复。登录