1

我对 Node 和 Koa2 还很陌生,所以请多多包涵。

我收到此错误:

TypeError: ctx.render is not a function

这是触发错误的行:

class HtmlRouter {
    static async home(ctx) {
        await ctx.render('index.ejs', {});
    }
}

ejs用作模板引擎。

我做错了什么或错过了什么?

4

1 回答 1

0

好的,我自己解决了这个问题。

我有这个:

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());

注意在前面的代码片段中,模板引擎是在依赖它的中间件运行之后定义的。

于 2017-05-20T22:40:27.337 回答