2013-12-10 14 views
0

當前設置
我有一個當前的快速應用程序,帶有資產管理器中間件,用於加載所有相關資產。我將這個應用程序部署到heroku。我應該在express.js應用程序中延遲app.listen(),直到資產完成加載(express/heroku)爲止?

這裏是我的問題:
偶爾我得到的競爭條件,其中app.listen()得到的調用之前的全部資產都加載完畢。這會導致第一頁加載時出現錯誤(500)(除非我等待5-10秒)。後續的頁面加載沒問題。我經常在本地主機上看到這種情況,偶爾也會看到這種情況。

這是我的問題
什麼被認爲是節點應用程序的最佳做法?我應該等到調用app.listen(),直到資源完成加載?這被認爲是一種安全的方法嗎?

加載i18n文件和類似的東西是一樣的。我應該延遲app.listen(),直到所有這些文件加載​​?想要做到這一點的最佳途徑?使用Q還是這樣?

謝謝

回答

0

只有.listen當你真正準備好,不要欺騙你的消費者!

assets.load(arg, arg, arg, function (err) { 
    if (err) { 
     throw new Error('uh-oh, no assets today!'); 
    } 
    app.listen(port, then); 
}); 

如果您遇到這麼多的麻煩處理靜態資產,你可能要考慮Grunt或類似的建築,然後have Heroku use your Grunt workflow甚至之前執行你的應用程序。

相關問題