Я пытаюсь создать приложение, используя nodejs и express. В настоящее время у меня возникла странная проблема.Ошибка 500 при использовании маршрутов в 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/она работает (например:/хоста/ограничено/MYAPP/что-то). Вот часть кода для функции 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)
не работает, потому что я Gent стандартный 500 экспресс страницу ошибки. Я также попытался поставить новый маршрут как этот
.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";
}
Я немного потерял до сих пор и небольшая помощь будет признателен :-) Спасибо много.
Вы можете показать 'routes.datePicker'? –
Вы должны указать более конкретные маршруты, перечисленные перед общими маршрутами. Попробуйте переместить app.get для «/ limited/myapp /: datetoget» выше «/ limited/myapp» –
Здравствуйте, я только что редактировал сообщение. @Hector Корреа: Я согласен с вами, но, к сожалению, порядок ничего :( – Caktus