2013-10-11 26 views
6

tôi đã thực hiện phía khách hàng ngoại lệ khai thác gỗ sử dụng window.onerror, nơi tôi lấy lỗi và stack trace hiện tại và gửi nó đến máy chủ sử dụng AJAXBản đồ nguồn JavaScript có hoạt động khi bắt lỗi không?

window.onerror = function(message, url, line) { 

     var stackTrace = printStackTrace(); //get stack trace 

     //send message, url, line and stackTrace to the server using an ajax call 
    } 

nơi printStackTrace là một chức năng được cung cấp bởi thư viện này: http://stacktracejs.com/

Vấn đề là trong quá trình sản xuất, tất cả các tệp JavaScript đều được rút gọn nên dấu vết ngăn xếp và số dòng không thực sự hữu ích vì tất cả các lỗi đang được báo cáo trên Dòng 1 trong tệp bình thường như phiên bản được rút gọn chứa một dòng mã. Ví dụ:

Message: Object doesn't support property or method 'indexOf' 
URL: http://[server]/[site]/content/combined/combined.635EE367354E6DF721593CAC56FECF95.min.js 
Line: 1 

Điều này có thể được cải thiện bằng cách sử dụng bản đồ nguồn hoặc chỉ hoạt động khi Công cụ nhà phát triển đang hoạt động không?

Điều tôi muốn là lấy dấu vết ngăn xếp đầy đủ bằng cách sử dụng bản đồ nguồn (hoặc ít nhất là số dòng thực) khi xảy ra lỗi cho người dùng không kích hoạt các công cụ nhà phát triển/bản đồ nguồn. Cái này nó có hoàn toàn có thể xảy ra được không ?

+0

Cần giải pháp cho cùng một vấn đề. Bạn ở đây bao lâu rồi? – IsmailS

+0

@iSid không tìm thấy giải pháp nào. có vẻ như nó không thực sự có thể cho đến khi các trình duyệt thực hiện nó. không biết nhiều thông tin hơn những gì được viết trong câu trả lời. xin lỗi – SzilardD

+0

@iSid câu hỏi này dường như có nhiều giải pháp hơn: http://stackoverflow.com/questions/19420604/angularjs-stack-trace-ignoring-source-map – xmojmr

Trả lời

4

Bạn chắc chắn có thể nhận được tất cả thông tin có trong bản đồ nguồn và tự thiết kế theo dõi ngăn xếp nhưng AFAIK chưa có giải pháp thanh lịch cho điều này. Dù bằng cách nào nó sẽ yêu cầu ajaxing xuống tập tin bản đồ ở mức tối thiểu và có lẽ là tập tin nguồn thô. Và bạn sẽ có một số vấn đề trình duyệt chéo khó khăn vì không phải tất cả các trình duyệt đều hỗ trợ đầy đủ các bản đồ nguồn.

Dường như stack trace có này trong kế hoạch của họ, nhưng không có ai thực hiện trên nó được nêu ra: https://github.com/eriwen/javascript-stacktrace/issues/44

Nhận Sentry không làm điều này như một phần của js họ đăng nhập tiện ích nhưng nó được bao bọc bên trong một công cụ đa mục đích hơn và tôi tin rằng công cụ này chỉ hỗ trợ đăng nhập theo dõi ngăn xếp đầy đủ trong Chrome hiện tại: https://github.com/getsentry/raven-js

Các vấn đề liên quan