我正在使用連接域模塊(https://github.com/baryshev/connect-domain)集中我的Express應用程序中的錯誤處理。Connect-Domain在以下情況下不會捕獲錯誤:
它的大部分工作。但是,由於我不明白的原因,當我在fs.exists檢查中拋出錯誤時,它不捕獲錯誤,而是崩潰節點。
app.get("/anurl/", function(req, res){
...
fs.exists(filename, function(exists) {
if (!exists) throw new Error("bah!");
...
});
});
編輯:
相當多的測試後,我瞭解到,以上是沒有問題的真正原因。
的實際問題與使用的Redis作爲會話存儲:
app.use(connectDomain());
app.use(express.session({
secret: "secretz",
store: new RedisStore({ client: redis })
}));
使用上面,connectDomain不再適用於已異步引發任何錯誤。 (這包括文件系統調用,超時,數據庫連接等)
如果我改變上述以下...
app.use(connectDomain());
app.use(express.session({ secret: "secretz" }));
...那麼一切都完美的作品。
因此,有關RedisStore的一些事情正在打破Connect-Domain。不幸的是我需要使用Redis來堅持我的會話。
有關如何解決此問題的任何進一步的建議將不勝感激。
試了一下 - 似乎不有所作爲。 – user1031947
檢查此:http://stackoverflow.com/questions/13228649/unable-to-handle-exception-with-node-js-domains-using-express – Marco