Node.js 在Express中使用路由时出现错误500
我正在尝试使用nodejs和express构建一个应用程序。我现在面临一个奇怪的问题 以下是到目前为止的情况: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
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,这就是抛出异常的原因。