Đúng là với các trình duyệt hiện đại, việc nối window.onerror đối với các lỗi nổi lên trên cùng cùng với việc thêm trình xử lý sự kiện jQuery cho các lỗi Ajax sẽ thực tế bắt được tất cả các đối tượng lỗi được đưa vào mã máy khách của bạn. Nếu bạn đang thiết lập thủ công một trình xử lý cho window.onerror, trong các trình duyệt hiện đại, điều này được thực hiện với window.addEventListener('error', callback)
, trong khi trong IE8 / 9, bạn cần gọi
window.attachEvent('onerror', callback)
.
Lưu ý rằng sau đó bạn nên xem xét môi trường mà những lỗi này đang được xử lý và lý do để làm như vậy. Việc phát hiện càng nhiều lỗi càng tốt với các hệ thống ngăn xếp của chúng là một điều, nhưng sự ra đời của các công cụ phát triển F12 hiện đại giải quyết trường hợp sử dụng này khi triển khai và gỡ lỗi cục bộ. Các điểm ngắt, v.v. sẽ cung cấp cho bạn nhiều dữ liệu hơn số dữ liệu có sẵn từ trình xử lý, đặc biệt là đối với các lỗi do thư viện bên thứ ba đưa ra từ các yêu cầu CORS. Bạn cần thực hiện các bước bổ sung để hướng dẫn trình duyệt cung cấp dữ liệu này.
Vấn đề quan trọng là cung cấp dữ liệu này trong quá trình sản xuất, vì người dùng của bạn được đảm bảo chạy một loạt các trình duyệt và phiên bản rộng hơn nhiều so với mức bạn có thể thử nghiệm và trang web / ứng dụng của bạn sẽ bị hỏng theo những cách không mong muốn, cho dù bạn có ném vào bao nhiêu QA nó.
Để xử lý điều này, bạn cần một trình theo dõi lỗi sản xuất sẽ chọn mọi lỗi được đưa ra trong trình duyệt của người dùng khi họ sử dụng mã của bạn và gửi chúng đến một điểm cuối nơi bạn có thể xem dữ liệu và sử dụng để sửa lỗi khi chúng xảy ra . Tại Raygun (tuyên bố từ chối trách nhiệm: Tôi làm việc tại Raygun), chúng tôi đã nỗ lực rất nhiều để cung cấp trải nghiệm tuyệt vời cho việc này, vì có nhiều cạm bẫy và vấn đề cần xem xét mà một triển khai ngây thơ sẽ bỏ lỡ.
Ví dụ: rất có thể bạn sẽ gộp và giảm thiểu nội dung JS của mình, điều đó có nghĩa là các lỗi được tạo ra từ mã được rút gọn sẽ có các đường xếp chồng rác với các tên biến bị xáo trộn. Đối với điều này, bạn cần công cụ xây dựng của mình để tạo bản đồ nguồn (chúng tôi khuyên bạn nên sử dụng UglifyJS2 cho phần này của đường dẫn) và trình theo dõi lỗi của bạn để chấp nhận và xử lý chúng, biến các đường xếp chồng bị xáo trộn trở lại thành những đường có thể đọc được. Raygun thực hiện tất cả những điều này và bao gồm một điểm cuối API để chấp nhận bản đồ nguồn khi chúng được tạo ra bởi quá trình xây dựng của bạn. Đây là chìa khóa vì chúng cần được giữ ở chế độ không công khai, nếu không, bất kỳ ai cũng có thể phá hoại mã của bạn, phủ nhận mục đích của nó.
Các raygun4js thư viện client cũng đi kèm với window.onerror
cho cả các trình duyệt hiện đại và di sản, cũng như jQuery móc out-of-the-box, vì vậy để thiết lập này bạn chỉ cần thêm:
<script type="text/javascript" src="//cdn.raygun.io/raygun4js/raygun.min.js" </script>
<script>
Raygun.init('yourApiKey').attach();
</script>
Ngoài ra còn có một loạt chức năng được tích hợp bao gồm khả năng thay đổi trọng tải lỗi trước khi nó được gửi đi, thêm thẻ và dữ liệu tùy chỉnh, siêu dữ liệu về người dùng đã gặp lỗi. Nó cũng giúp bạn không phải lo lắng khi nhận được dấu vết ngăn xếp tốt từ các tập lệnh CORS bên thứ ba nói trên, giải quyết 'Lỗi Tập lệnh' đáng sợ (không chứa thông báo lỗi và không có dấu vết ngăn xếp).
Một vấn đề quan trọng hơn là do lượng người xem lớn trên web, trang web của bạn sẽ tạo ra hàng nghìn trường hợp trùng lặp của mỗi lỗi. Một dịch vụ theo dõi lỗi như Raygun có các tính năng thông minh để tổng hợp những lỗi này thành các nhóm lỗi để bạn không bị chìm trong đống thông báo và cho phép bạn xem từng lỗi thực tế đã sẵn sàng để sửa.