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 ?
Cần giải pháp cho cùng một vấn đề. Bạn ở đây bao lâu rồi? – IsmailS
@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
@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