2012-01-19 22 views
8

Vì vậy, ngay bây giờ, chúng tôi có một số mã chung để báo cáo lỗi từ mã của chúng tôi hoặc mã của bên thứ ba. Dự án của chúng tôi là một dự án JQM/Phonegap cho iOS. Điều gì đang xảy ra là chúng tôi khá nhiều luôn luôn có được cùng một lỗi vô dụng ... TypeError: 'undefined' không phải là một chức năng ... mà không có số dòng hoặc thông tin hữu ích khác. Có cách nào tôi có thể thay đổi mã để có thể nhận được những gì là không xác định hoặc ở đâu?Cải thiện báo cáo lỗi javascript của chúng tôi

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { 
    //Handle errors not in a jquery event handler 
    //DebugMessage(errorMSg + " "+ url + " " + lineNumber); 
    var ex = new Error(errorMsg, url, lineNumber); 
    HandleError(ex, "window.onerror"); 
     //HandleError sends the error object to 
     //a webservice to log the error. 
    return true; 
}; 

Mọi mẹo gỡ lỗi javascript cũng sẽ giúp ích.

+1

Tôi có cùng một vấn đề. Nó trông giống như một lỗi của UIWebView, bởi vì khi tôi chạy cùng mã trên safari/chrome, lineNumber được định nghĩa. Chúng ta nên báo cáo lỗi cho Apple: https://bugreport.apple.com - chúng tôi càng điền đầy đủ báo cáo về lỗi này, càng có nhiều điều sẽ trở nên quan trọng (không thể bỏ phiếu cho một lỗi, vì vậy nhóm Apple ưu tiên đếm báo cáo lỗi số lượng trùng lặp). – Samuel

+0

Không chắc chắn nếu điều này làm việc cho điện thoại di động nhưng tôi đã sử dụng này trong quá khứ: https://github.com/posabsolute/jQuery-Error-Handler-Plugin cũng bật chế độ gỡ lỗi trong Mobile Safari và sử dụng console.log ('lỗi thông điệp'); hoạt động cũng như –

+0

Nhìn vào mã cho các plugin, nó làm điều tương tự như mã trên (thay thế onerror với mã các email/các bản ghi lỗi). Vì vậy, tôi vẫn sẽ nhận được TypeError: 'undefined' không phải là một hàm, dòng: undefined. Tôi sẽ điền vào báo cáo lỗi trong khi tôi tiếp tục tìm cách để giải quyết vấn đề. – Twomz

Trả lời

0

Bạn đã nghe nói về Ripple chưa? Đây là trình mô phỏng thiết bị di động cho Chrome được thiết kế để thử nghiệm các ứng dụng PhoneGap.

Điều đó có thể giúp bạn tìm thấy lỗi của mình trước khi gỡ lỗi trên thiết bị.

1

Trong những tháng gần đây, các trình duyệt đã mở rộng chữ ký của window.onerror để cung cấp thêm thông tin.

window.onerror = function(msg, file, line, col, error) { 

    // backwards compat 
    if (!error) { 
    error = new Error(msg); 
    } 

    // send error to your logger 

} 

Điều này sẽ cung cấp cho bạn nhiều thông tin hơn. Nhưng vẫn còn những thứ mà bạn cần bối cảnh tốt hơn. Bạn nên kiểm tra một số công cụ của bên thứ ba cho việc này như TrackJS tự động cung cấp cho bạn điều này, cùng với thông tin bổ sung về cách xảy ra lỗi.

Tuyên bố từ chối trách nhiệm: Tôi là một trong những tác giả gốc của TrackJS, vì vậy tôi biết một loạt về lỗi JavaScript :)

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