2011-09-22 103 views
1

我嘗試了節點,它的Express框架通過Express樣板安裝。我花了一段時間才弄清楚我需要安裝Redis(順便說一句,如果你製作的樣板包括所有必需的軟件,或者警告某些軟件的要求--Redis從未按要求提及),並讓我的方式圍繞server.js文件。節點JS Express鍋爐板和渲染

現在我還是個陌生的我怎麼能在這建立一個網站..

有一個問題困擾我特別 - 當我運行server.js文件,它說,這一切都很好。當我嘗試在瀏覽器中訪問它時,它說'從本地主機傳輸數據'並且永遠不會結束 - 就像渲染沒有完成發送並且永遠不會發送標頭。沒有錯誤,沒有日誌,沒有什麼 - res.render('index')只是掛起。該文件存在,腳本找到它,但什麼都沒有發生。我沒有定義渲染回調,所以頭文件應該照常發送。 另一方面,如果我用一個簡單的寫('Hello world')替換渲染命令;然後做一個res.end();它的作用就像一個魅力。

我在做什麼錯誤渲染?我沒有改變從原來的安裝順便說一句。有問題的文件是index.ejs,它在views /中,我甚至調用了app.register('。ejs',require('ejs'));以防萬一在渲染本身之前。 EJS已安裝。另外值得注意的是 - 如果我做了res.render('index');然後res.write('Hello');緊接着是res.end();我在屏幕上顯示「Hello」,但渲染從不發生 - 它只是掛起並且顯示「從本地主機傳輸數據」。所以應用程序不會真的死或掛起,它只是從來沒有完成渲染。

編輯:有趣的事件變化:如果我在渲染中定義了回調,則響應結束。沒有更多的「傳輸數據...」,但視圖永遠不會呈現,佈局也不會。來源在檢查時是完全空的。沒有任何錯誤,也沒有例外。

+0

https://github.com/munichlinux/expressjs-boilerplate – Prashanth

回答

0

問題修復。它變成我們的render()必須是路由鏈中絕對最後的命令。把res.write('你好');和res.end();之後它正是破壞它。

我刪除了所有內容,只寫了res.render('index'),它像一個魅力一樣工作。從我的失敗學習,新手 - 渲染後不輸出任何東西!

+0

'.render'調用'.end'因此http連接已經結束。這意味着你沒有什麼可寫的。它沒有拋出錯誤的事實是令人驚訝的 – Raynos