6

私の設定:

私のディレクトリ構造は次のようになります。

/views/
   |-- index.jade
   |-- layout.jade
   /account/
      |-- login.jade
      |-- register.jade

ビューエンジンを次のように構成しました。

app.set('view engine', 'jade');

編集:私も持っています

app.set('views', __dirname + '/views');

私のコントローラーは次のようになります。

app.get('/login', redirectIfLogined, function(req, res){
    res.render('account/login', { title: "Login", redir: req.query.redir});
});

app.get('/register', redirectIfLogined, function(req, res) {
    res.render('account/register', { title: "Register"});
});

私の問題

説明されている設定では、500 エラーが発生します。

500 Error: failed to locate view "layout"
at Function.compile (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:58:15)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:414:18)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at ServerResponse._render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:429:10)
at ServerResponse.render (D:\dev\Azznomad\express-template\node_modules\express\lib\view.js:315:17)
at D:\dev\Azznomad\express-template\controllers\accountController.js:6:13
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at D:\dev\Azznomad\express-template\modules\middleware\account.js:27:9
at callbacks (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:272:11)
at param (D:\dev\Azznomad\express-template\node_modules\express\lib\router\index.js:246:11)

layout.jadeファイルをフォルダーにコピーするとすぐに、/account/完全に機能します。残念ながら、冗長なレイアウト ファイルが必要になるため、これは意味がありません。

私は何が欠けていますか?


ところで。このコード スニペットは、AzzNomad のExpress/Mongoose テンプレートからのもので、Mongoose で Expressを学習するのに非常に役立ちます。

4

2 に答える 2

7

あなたが置く必要があります

extends ../layout

レイアウトが同じフォルダーにないため、アカウントの下のビューに表示されます。

于 2012-09-29T08:12:49.890 に答える
1

アプリケーション スクリプトとは別のディレクトリにあるため、ビュー パスも設定する必要があります。

app.set('views', __dirname + '/views');
于 2012-05-06T18:31:33.370 に答える