मेरे पास मेरे एक्सप्रेस ऐप के अंदर बहुत सारे ES6 वादे आधारित कोड चल रहे हैं। यदि कोई त्रुटि है जो कभी पकड़ा नहीं जाता है तो मैं इसके साथ निपटने के लिए निम्न कोड का उपयोग कर रहा हूं:एक्सप्रेस अनुप्रयोगों में अनचाहे रिजेक्शन
process.on('unhandledRejection', function(reason, p) {
console.log("Unhandled Rejection:", reason.stack);
process.exit(1);
});
यह डिबगिंग उद्देश्यों के लिए ठीक काम करता है।
उत्पादन में हालांकि मैं 500 त्रुटि वाले हैंडलर को ट्रिगर करना चाहता हूं, ताकि उपयोगकर्ता को "कुछ गलत हो गया" पृष्ठ दिखाया जा सके।
app.use(function(error, req, res, next) {
res.status(500);
res.render('500');
});
एक मध्यस्थ के अंदर unhandledRejection लाना के रूप में यह async है और offen परिणाम एक Error: Can't render headers after they are sent to the client.
में मैं कैसे प्रतिपादन के बारे में जाना होगा काम नहीं करता है: मैं इस पकड़ सभी त्रुटि हैंडलर है कि वर्तमान में अन्य अपवाद के लिए काम करता है unhandledRejection
पर 500 पेज?
इसलिए हमें हमेशा त्रुटियों को संभालने के लिए 'अगली' का उपयोग करना चाहिए और वादा अस्वीकृति के लिए कोई वैश्विक त्रुटि हैंडलर नहीं है :(यह इतना बुरा है! –