1
レンダラーとして[email protected]
のKoa v2アプリがあり、レンダラーとしてnunjucks
テンプレートエンジンがあります。koa v2用のNunjucksセットアップ
const Koa = require('koa');
const nunjucks = require('nunjucks');
const path = require('path');
const router = require('koa-router')();
const views = require('koa-views');
const app = new Koa();
const index = require('./routes/index');
app.use(views(path.join(__dirname, 'views'), {
extension: 'njk',
map: { njk: 'nunjucks' },
}));
nunjucks.configure(path.join(__dirname, 'views'), {
autoescape: true,
});
router.use('/', index.routes(), index.allowedMethods());
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(3000);
をしかし、私はこれを行わない場合、レンダリングが動作しない:ここでは問題ありません、私の作業セットアップは、ですが、私はちょうどviews
フォルダの二重の宣言と混同します。
Template render error: (unknown path)
Error: template not found: layout.njk
私のセットアップに問題がある:私はnunjucks.configure
ブロックのコメントを解除した場合、私は次のエラーを取得していますか?
nunjucksにアプリのインスタンスを渡す試してみてください: 'nunjucks.configure(...、{表現: app、autoescape:true}) 'を実行します。 –
'app.set( 'view'、NunjucksView);'ファイル 'node_modules \ nunjucks \ src \ environment.js:288'で' app.set is not a function'エラーを出しています。私はそれが 'Koa'のためではなく、' Express'アプリのためのラッパーであると思います。 – Lanti
koa-views(およびそれが使用するexpress lib)には問題があります。彼らは完全に一般化していない。たとえば、最後にチェックして、ネストされたnunjucksテンプレートをキャッシュしません。これは、本番環境でfs-statコールがあることを意味します。 nunjucksを直接使用することをお勧めします。 https://github.com/ohomer/koa-nunjucks-render/blob/master/index.jsのソースを確認してください - あなたの質問にも答えてくれるかもしれません。 – danneu