2011-09-20 38 views
9

我正在通過ExpressJS創建一個NodeJS Web應用程序。我有以下兩種途徑(其中包括):帶參數的路由被調用兩次?

app.get('/user/reset/verify', function(req, res) { 
    console.log("Executing verification index."); 
    res.render("verify/index"); 
}); 

app.get('/user/reset/verify/:email/:token', function(req, res) { 
    console.log("Executing verification change."); 
    res.render("verify/change"); 
}); 

當我去驗證索引頁,我看「執行驗證指標。」在控制檯上打印一次。但是,當我進入驗證更改頁面時,我看到「執行驗證更改」。在控制檯上打印兩次。

我注意到這是在我的應用程序路線的趨勢。包含參數的路由總是執行兩次,而沒有參數的路由只能(正確)執行一次。

爲什麼參數路由被執行兩次?

正在呈現的視圖只包含簡單的HTML - 不會導致對該頁面的另一個請求。另外,我正在從Chrome瀏覽器發佈這些請求。

平臺/版本:

  • 的NodeJS:0.5.5窗口建設
  • 快遞(在Win 7上運行):2.4.6
  • 連接:1.7.1
+0

我希望它的節點0.5.5錯誤。嘗試使用0.4.12 – Raynos

+0

@Raynos:好的,我會試着找到一個0.4.12的windows可執行文件,看看是否解決了這個問題。 –

+1

0.4.12沒有窗口可執行文件。 Express不支持0.5.x版本(風險自負)。我建議你在linux上使用0.4.0 – Raynos

回答

17

的第二個請求是/favicon.ico 嘗試在您的http_server請求處理程序中控制檯登錄您的request.url,您會看到第一個是瀏覽器url和下一個favicon。

+0

那麼我們如何解決這個問題呢? – Asool

-1

如果您使用的是Chrome瀏覽器: 當您編寫您的網址chrome發送獲取請求以在您按Enter之前檢查url。

嘗試記錄中間件的網址console.log(req.url)將您的控制檯放置在您的瀏覽器旁邊,然後開始寫入URL,您將看到控制檯正在記錄獲取訪問權限。