我对 Node 和 Koa2 还很陌生,所以请多多包涵。
我收到此错误:
TypeError: ctx.render is not a function
这是触发错误的行:
class HtmlRouter {
static async home(ctx) {
await ctx.render('index.ejs', {});
}
}
我ejs
用作模板引擎。
我做错了什么或错过了什么?
好的,我自己解决了这个问题。
我有这个:
app.use(body());
app.use(mount('/api/v1', filmRouter.routes()));
app.use(filmRouter.routes());
app.use(htmlRouter.routes());
app.use(views(__dirname + '/views', {
map: {
ejs: 'ejs'
}
}));
该错误是由于中间件的顺序造成的。按照这个顺序,它工作正常:
app.use(body());
app.use(views(__dirname + '/views', {
map: {
ejs: 'ejs'
}
}));
app.use(mount('/api/v1', filmRouter.routes()));
app.use(filmRouter.routes());
app.use(htmlRouter.routes());
注意在前面的代码片段中,模板引擎是在依赖它的中间件运行之后定义的。