を見つけていない私は、次エクスプレス4ビューエンジンの設定があります。私のルートで急行-ハンドルが私のレイアウトやパーシャル
/views
error.hbs
index.hbs
/partials
menu.hbs
/layouts
layout.hbs
そして最後に:
var handlebars = require('express-handlebars').create({
layoutsDir: path.join(__dirname, "views/layouts"),
partialsDir: path.join(__dirname, "views/partials"),
defaultLayout: 'layout',
extname: 'hbs'
});
app.engine('handlebars', handlebars.engine);
app.set('view engine', 'hbs');
app.set('views', path.join(__dirname, "views"));
を私は、次のファイル構造を持っています:res.render('index');
私のサイトにアクセスすると、私のindex.hbs
テンプレートだけが読み込まれます。私のlayout.hbs
は使用していません。私は何かエラーや何かを得ることはありません。ハンドルバーの設定でlayout
がデフォルトレイアウトに設定されていても、レイアウトは使用されません。
次の私はこれに私のコードを変更しようとしました:
res.render('index', {layout: 'layout'});
今、私はエラーを取得する:
Error: ENOENT: no such file or directory, open '/.../views/layout.hbs'
それは私のlayoutsDir
を見つけていないようなので、それはだ...何私はここで行方不明ですか?
次は私がこれまでにそれを変更:それは働いていたので
res.render('index', {layout: 'layouts/layout'});
わかりました。私のレイアウトがロードされました。しかし、私は私のレイアウトに部分的に追加:
{{> menu }}
を今私が手:/.../views/index.hbs: The partial menu could not be found
だから何がここで起こっていますか?どのようにハンドルバーが私のlayoutsDir
またはpartialsDir
を認識しないのですか?それは、まったく何かでそれらを見ていないだけです。そして、どのようにdefaultLayout
が使われていないのですか?私はレイアウトを指定しなければならなかった。
私は '.handlebars'と私のコードで取り出し' hbs'参照するすべての名前を変更しました。私の結果に変更はありません。 –
前回の検証に使用した完全なコードで投稿を更新しました。あなたは違いを見つけることができますか?変更を正しく行った後でアプリを再起動しましたか? :) –
何故か、何らかの理由で、すべての名前を '.hbs'に改名してコードを使用したら、今はうまくいきます。その違いが以前のものであったかどうかはっきりしない。はい、毎回ノードを再起動していました。ありがとう、 –