Node.js 在Express中使用路由时出现错误500

Node.js 在Express中使用路由时出现错误500,node.js,express,Node.js,Express,我正在尝试使用nodejs和express构建一个应用程序。我现在面临一个奇怪的问题 以下是到目前为止的情况: var express = require('express'); var routes = require('./routes'); //here I have all functions for routing app.use(app.router); app.get("/", routes.index) .get("/login", routes.login) .ge

我正在尝试使用nodejs和express构建一个应用程序。我现在面临一个奇怪的问题

以下是到目前为止的情况:

var express = require('express');
var routes = require('./routes'); //here I have all functions for routing
app.use(app.router);
app.get("/", routes.index)
   .get("/login", routes.login)
   .get("/restricted/menu", routes.menu)
   .get("/restricted/myapp", routes.datePicker) //I send to a page where the user select a date
   .get("/restricted/myapp/:datetoget", routes.myapp) //after selecting the date, the user is redirected to a URL like this : /restricted/myapp/2014-01-30
   .use(route.allOther);
   .... 
当我尝试访问该页面时出现问题:

主机/受限/myapp/

不填写“datetoget”参数。这是我尝试访问此页面时的控制台

HTTP Express server listening on port 3000
undefined
GET /restricted/myapp/ 500 8ms
一旦我在myapp后放置了某个内容,它就会工作(例如:/host/restricted/myapp/something)。 以下是routes.myapp函数的部分代码:

function(req,res){
    console.log('into myapp'); //this step seems not to be reached
    var date;
    if(req.params.datetoget){
        date = new Date(req.params.datetoget);
        if(!utilities.isDate(date)){
             date = new Date();
        }
    }else{
        date = new Date();
    }
    ...
}
是否也似乎是最后一次

.use(routes.allOther)
无法工作,因为我忽略了标准500 express错误页。 我也尝试过这样的新路线

.get('/restricted/myapp/', routes.myapp)
这并没有解决问题

以防万一这是routes.datePicker

var notInDir = true;
for(var dirKey in directories){ //directories is an object where I store string of directories
    var dir = directories[dirKey];
    if(req.originalUrl === dir.ref){ //The origin must be known
        var datePicker = {
                title:"Select the date",
                jsFile: [array of Javascript needed files],
                cssFile: [array of css needed files],
                mode: "datebox",
                ref: req.originalUrl
            };
        res.render("/restricted/datepicker.ejs",datePicker);
        notInDir = false;
    }
}
if(notInDir){
    throw "Error";
}
到目前为止,我有点不知所措,希望能得到一些帮助:-)
非常感谢。

express似乎考虑了这条路线:

/restricted/myapp
/restricted/myapp/
这条路线:

/restricted/myapp
/restricted/myapp/

同样的。因此,调用的函数是routes.datePicker。但在我的例子中,源(/restricted/myapp/)没有在“目录”中定义,只有/restricted/myapp,这就是抛出异常的原因。

能否显示
路由。datePicker
?您应该在常规路由之前列出更具体的路由。尝试将app.get移到“/restricted/myapp/:datetoget”上方“/restricted/myapp”你好,我刚刚编辑了这篇文章@赫克托·科雷亚:我同意你的看法,但遗憾的是,订单没有改变任何东西:(似乎express认为这条路线:/restricted/myapp和这条路线:/restricted/myapp/是一样的。因此,函数名为routes.datePicker。但在我的例子中,源(/restricted/myapp/)未在目录中定义,只有/restricted/myapp,这就是抛出异常的原因。