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 に答える