2012-04-09 42 views
8

Google Analytics cho thấy ~ 12% tổng số người dùng của chúng tôi bị ảnh hưởng bởi một lỗi Javascript của:Không thể để tái tạo Lỗi Loại: 'undefined' không phải là một đối tượng

TypeError: 'undefined' is not an object

90% trong những trình duyệt được Safari 7534.48.3, 10% là tác nhân tương thích của Mozilla. 75% các lỗi đến từ iPhone, 23% từ iPad. 1% từ Macintosh, 2% còn lại là từ iPod, vv Không có thiết bị nào chạy Linux hoặc Windows.

Tôi đã thử bật chế độ gỡ lỗi trong safari trên cả iPhone và iPad nhưng không thể tạo lại lỗi.

Here is a link to a page Google Analytics claims is showing the error. Nếu bất cứ ai có thể tái tạo một cách nhất quán lỗi ở đây, tôi sẽ cực kỳ hạnh phúc vì chỉ một số dòng sẽ đủ để tôi bắt đầu gỡ lỗi.

Có ai có thể nghĩ ra bất kỳ cách nào khác mà tôi có thể thử gỡ lỗi này không? Cảm ơn tất cả

Vì tò mò với chúng tôi, tôi đang sử dụng this code to send errors to GA - Cảnh báo: Có thể tự quảng bá.

Cập nhật: Lỗi Loại: 'undefined' không phải là một đối tượng (đánh giá 'safari.self.tab.canLoad')

Managed để có được điều đó ra khỏi nó một lần khi nhấp xung quanh, chủ yếu là trên iphone khi nhấp vào "Thay đổi quốc gia .."

Cập nhật: Giải quyết vấn đề này bằng cách đảm bảo phần tử có sẵn trong dom. Hóa ra lời kêu gọi ajax về thành công đã cố gắng ghi vào một yếu tố không có sẵn.

tôi đã giữ một kỷ lục vững chắc của Unable to reproduce TypeError: 'undefined' is not an object here

+0

Vì vậy, tệp và dòng lỗi xuất hiện là gì? Mã của bạn cũng gửi mã đó tới GA. – Bergi

+0

undefined: 0 .. :(- Sô cô la ấm trà đến với tâm trí ... –

+0

@JohnMcLear: nếu bạn tìm thấy câu trả lời, tôi nghĩ tốt hơn bạn nên đăng câu trả lời và phê duyệt nó (nó được cho phép), thay vì chỉ cập nhật câu hỏi của bạn, vì nó có vẻ như nó vẫn còn hoạt động (chưa được trả lời) khi nó không phải là – Max

Trả lời

0

Trong functions.js của bạn, bạn có điều này:

storage_get = function(key) { 
    var store = (window.SAFARI ? safari.extension.settings : localStorage); 
    var json = store.getItem(key); 
    if (json == null) 
    return undefined; 
    try { 
    return JSON.parse(json); 
    } catch (e) { 
    log("Couldn't parse json for " + key); 
    return undefined; 
    } 
} 

undefined KHÔNG phải là một từ khóa JavaScript. Đó là một biến mà (hầu hết thời gian) xảy ra là không xác định. Bạn không thể sử dụng undefined như thế này. Hãy xem xét những gì sẽ xảy ra nếu bạn thay thế nó bằng pinkelephant, vì đó là điều chính xác đang xảy ra ở đây.

+0

Đây là điều kỳ lạ, tôi không thấy functions.js ... Nguồn là gì.js cho bạn? IE là nó đến từ cloudflare , google hoặc sharethis? –

+5

Sử dụng 'pinkelephant' sẽ ném một tham chiếu, bằng cách sử dụng' undefined' không và chỉ trả về giá trị 'undefined'. Ngoài ra, tôi chắc chắn bạn đang xem mã mở rộng của Chrome AdBlock: http://code.google.com/p/adblockforchrome/source/browse/trunk/functions.js?r=3645#85 :) – DCoder

+0

Haha tốt điểm :) Vâng, đó là chỉ 'undefined' tôi có thể tìm thấy ... Có lẽ đó là câu trả lời cho vấn đề của mình mặc dù - phần mở rộng trình duyệt với lỗi? –

-3

Trước hết, tôi ngạc nhiên khi bạn lo lắng về việc JavaScript của bạn đang đẩy lỗi tới GA ... Bạn dường như có khá nhiều mã lỗi 404 trên một số liên kết.

Second tắt, tôi thấy một lỗi JavaScript mà tôi cảm thấy công đức câu trả lời này:

Đang cố gắng để đăng ký để cập nhật email cho một biến không xác định trên phản ứng (rõ ràng là thiết lập để dữ liệu trong các thông số chức năng):

msh.header.js:213 ReferenceError: Can't find variable: response 
Các vấn đề liên quan