Tôi có một mã với AngularJS:từ chối Có thể không được quản lý ở góc 1,6
service.doSomething()
.then(function(result) {
//do something with the result
});
Trong AngularJS 1.5.9 khi tôi có lỗi trong .then()
phần như:
service.doSomething()
.then(function(result) {
var x = null;
var y = x.y;
//do something with the result
});
Tôi nhận được rõ ràng thông báo lỗi:
TypeError: Cannot read property 'y' of null
Nhưng trong phiên bản 1.6 có cùng mã tôi gặp lỗi khác nhau:
Possibly unhandled rejection: {} undefined
Tôi biết rằng điều này có liên quan đến this change, và là giải pháp duy nhất là khá đơn giản bằng cách thêm .catch()
khối:
service.doSomething()
.then(function(result) {
var x = null;
var y = x.y;
//do something with the result
})
.catch(console.error);
Bây giờ tôi lại có những gì tôi muốn:
TypeError: Cannot read property 'y' of null
Nhưng làm thế nào để có được kết quả tương tự (lỗi chi tiết hơn) cho toàn bộ ứng dụng mà không cần thêm .catch()
chặn ở mọi nơi?
Tôi đã thử nghiệm giải pháp đề nghị để vô hiệu hóa điều này bằng cách bổ sung thêm:
$qProvider.errorOnUnhandledRejections(false);
Nhưng với điều này tình hình thậm chí còn tồi tệ hơn - Tôi không có bất cứ điều gì trong giao diện điều khiển! Lỗi được nuốt ở đâu đó và không đăng nhập. Tôi không chắc chắn nó là một vấn đề với AngularJS 1.6 hoặc với cấu hình của tôi.
Bạn có ý tưởng nào về cách "khôi phục" hành vi ghi nhật ký từ phiên bản 1.5.9 không?
EDIT:
Thêm xử lý lỗi tùy chỉnh:
.factory('$exceptionHandler', function($log) {
return function(exception, cause) {
$log.warn(exception, cause);
};
})
không giúp gì cả. Trong trình xử lý lỗi, tôi đã nhận được lỗi "gói".
Không có ý tưởng về điều này. Nhưng gần đây tôi đã hoàn nguyên ứng dụng của mình từ 1.6 đến 1.5.x .. Tôi đã gặp rất nhiều vấn đề với 1.6. – Ved
Tôi cũng sắp hoàn nguyên, đặc biệt là sau khi nhìn thấy câu trả lời bên dưới. Tôi lãng phí hai ngày về điều vô nghĩa này. – Sharondio