2014-01-30 29 views
1

我正在嘗試使用nodejs和express來構建應用程序。我目前面臨一個奇怪的問題。在Express中使用路由時出現錯誤500

下面是它的外觀到目前爲止:

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」參數。這是控制檯,當我嘗試當我把東西后的myapp /它的工作原理達到這一頁

HTTP Express server listening on port 3000 
undefined 
GET /restricted/myapp/ 500 8ms 

(例如:/主機/受限制/ 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) 

不起作用,因爲我的紳士標準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"; 
} 

我有點到目前爲止丟失一點點的幫助,將感激:-) 非常感謝。

+0

你能顯示'routes.datePicker'嗎? –

+0

您應該在普通路線之前列出更具體的路線。嘗試將「/ restricted/myapp /:datetoget」的app.get移動到「/ restricted/myapp」上面 –

+0

您好,我剛剛編輯了這篇文章。 @Hector科雷亞:我同意你的看法,但遺憾的是,該命令沒有改變任何東西:( – Caktus

回答

0

看來,快遞認爲這條路線:

/restricted/myapp 

和這條路線:

/restricted/myapp/ 

由於相同。所以調用的函數是routes.datePicker。但在我的例子中,origin(/ restricted/myapp /)沒有在''目錄'中定義,只是/ restricted/myapp,這就是拋出異常的原因。

相關問題