Expressを含むNodeアプリケーションがあります。ここまでは、Swigをビューエンジンとして使用してきました。私はこのようなビューエンジンを設定しました:Express AppでNunjucksを使用する
app.engine('html', swig.renderFile);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');
このアプローチは私のために働いています。しかし、Swigは非難されているので、私はNunjucksに移ろうとしています。これを行うために、私は以下を行った:
nunjucks.configure('views', {
autoescape: true,
cache: false,
express: app
});
app.engine('html', nunjucks.render);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'html');
これは動作しません。私はランタイムエラーが発生しますが、実際に何がスローされたのかはわかりません。最も基本的なビューをロードしようとする試みで、私は次のHTMLページをロードしようとしている:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
これは意図的に任意のテンプレートを使用していない、本当に基本的なHTML形式の図です。私はビューエンジンとして設定されたnunjucksでHTMLビューをロードできるようにしたいだけです。それでも、私はまだエラーが発生します。
私はrender functionがコールバックを持っていることがわかります。コールバックには私が見ることができるエラーオブジェクトがあるようです。しかし、私はどのように実際にそのコールバックをapp.engine('html', nunjucks.render);
内で使用するのか分かりません。
任意の洞察力はずっと
私がそうすると、「[エラー:テンプレートが見つかりません:index.html]」というエラーが表示されます。 nunjucksはindex.htmlがどこにあると予想していますか?私はそれが./views/index.htmlを探していると仮定します。しかし、明らかにそうではありません。 – user687554
私は 'views'を 'path.join(__ dirname、 '../ views')'に置き換えました。さて、それは動作します。ありがとう – user687554