路线和意见

时间:2012-10-25 11:41:25

标签: node.js routes express

我正在使用带有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”工作正常但第二个发送此异常:

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 \ lib \ view.js”,函数:“_ render”)并打印出本地“options.root”。值是:“D:\ Webstorm \ myExpress / views”..这似乎不对。但我仍然想知道为什么root请求有效。我更改了这一行:

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

到此:

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

没有成功。

3 个答案:

答案 0 :(得分:1)

由于我在Windows机器上工作,我必须使用“\”而不是“/”。我对此感到困惑,因为我不必关心请求路径(app.get(“/ game”,..))而不关心根索引文件。 (res.render(“/”);)

解决方案是:

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

res.render('\\game\\index');

答案 1 :(得分:0)

尝试从那里删除locals关键字及其相应的大括号。

答案 2 :(得分:0)

尝试删除前导斜杠:

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

或:

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

它正试图在/game/index找到一个文件,而不是/directory/with/your/views/game/index