1

Expressでnodejsを使用しています。ルート パスへの get-request で、インデックス ファイルにルーティングしたい。パス「/game」への get-request がある場合、別のソースにルーティングしたい。

app.get('/', function(req, res){
    res.render( "index", {locals : { myLocal : "myValue"}} );
});

app.get('/game', function(req, res){
    res.render("/game/index", {locals : { myLocal : "myValue"}} );
});

最初の「get」は問題なく機能しますが、2 番目は次の例外を送信します。

500 Error: failed to locate view "/game/index"
at Function.exports.compile (D:\Webstorm\myExpress\node_modules\express\lib\view.js:61:15)
at ServerResponse.res._render (D:\Webstorm\myExpress\node_modules\express\lib\view.js:417:18)
at ServerResponse.res.render (D:\Webstorm\myExpress\node_modules\express\lib\view.js:318:17)
at exports.game (D:\Webstorm\myExpress\routes\index.js:12:9) at callbacks                  (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:272:11)
at param (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:246:11)
at pass (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:253:5)
at Router._dispatch (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:280:5)
at Object.middleware [as handle] (D:\Webstorm\myExpress\node_modules\express\lib\router\index.js:45:10)
at next (D:\Webstorm\myExpress\node_modules\express\node_modules\connect\lib\http.js:204:15)

これは私のフォルダ構造です:

views
  |--- game
  |      |---index.jade
  |      |---layout.jade
  |---index.jade
  |---layout.jade 

アップデート ########

Express自体(ファイル:「\express\lib\view.js」、関数:「_render」)をチェックし、ローカルの「options.root」を出力しました。値は「D:\Webstorm\myExpress/views」です..これは正しくないようです。しかし、なぜ root-request が機能するのか疑問に思っています。この行を変更しました:

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

これに:

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

成功しませんでした。

4

3 に答える 3

1

私は Windows マシンで作業しているので、「/」の代わりに「\」を使用する必要があります。ルートインデックスファイルではなく、リクエストパス( app.get("/game",..) )でそれを気にする必要がないので、私はそれについて混乱しました。( res.render("/"); )

解決策は次のとおりです。

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

res.render('\\game\\index');
于 2012-10-25T12:42:25.180 に答える
0

先頭のスラッシュを削除してみてください:

res.render("game/index", {locals : { myLocal : "myValue"}} );

また:

res.render("game\\index", {locals : { myLocal : "myValue"}} );

/game/indexではなく でファイルを検索しようとしています/directory/with/your/views/game/index

于 2012-10-25T16:46:03.137 に答える
0

localsそこからキーワードとそれに対応する中括弧を削除してみてください。

于 2012-10-25T12:13:45.920 に答える