Sorun giderme
Sık karşılaşılan arcy.js kurulum sorunlarının çözümleri.
arcy.js uygulamanıza hiçbir zaman hata fırlatmaz. Karşılaştığı her sorun, ister hatalı bir
çağrı, ister engellenmiş bir betik, ister kaydedilmeyen bir özellik olsun, bir istisna değil
[arcy] ön ekli bir console.warn mesajına dönüşür. Her şeyden önce tarayıcı konsolunuzda bu
mesajlardan birini arayın: sorunu neredeyse her zaman adıyla söyler.
Widget hiç görünmüyor
Önce konsolda [arcy] Failed to load. ARCY is disabled. mesajına bakın. Bu, betiğin hiç
yüklenmediği anlamına gelir, en sık şu nedenlerle:
- Bir reklam engelleyici veya katı bir İçerik Güvenlik Politikası (CSP) isteği engelledi. Bir
CSP kullanıyorsanız
script-srcveconnect-srcdirektiflerinizi kontrol edin. - Betik yüklenmeden sayfa başka bir yere gitti.
Bu mesajı görmüyorsanız arcy.js yüklenmiş ama sayfaya yerleşememiştir. Şuna bakın:
[arcy] The page has no <body> to mount into yet. The widget will not render.Bu, init() çağrısının <body> daha ortada yokken çalıştığı anlamına gelir. Genellikle
sebebi, defer veya async olmadan <head> içine konmuş bir betiktir. Betik etiketini kapanış
</body> etiketinden önceye taşıyın ya da arcy.init(...) çağrısını yalnızca DOM hazır olduktan
sonra çalışan bir koddan yapın.
[arcy] This ARCY surface is already on this page. Ignoring the second mount.
[arcy] Another copy of ARCY is already on this page. Ignoring this one.Bu, kod parçacığının iki kez kurulduğu anlamına gelir. En sık nedeni, aynı sayfada hem NPM hem HTML yolunun bulunması ya da HTML kod parçacığının iki ayrı yere yapıştırılmasıdır (örneğin bir düzen şablonu ve bir etiket yöneticisi). Tek bir kurulum yolu seçin ve diğerini kaldırın.
Verify installation "No traffic yet" diyor
arcy.init() çağrısı token'ınızın ortamına hiç ulaşmadı. Olasılık sırasına göre:
arcy.init()çağıran sayfa tarayıcıda hiç açılmadı, yalnızca kod tabanınıza eklendi. Verify installation ekranı açıkken gerçek sayfayı açıp yenileyin.init()içindeki token, kontrol ettiğiniz ortamla eşleşmiyor. Token'ı o ortamın Settings > Installation sayfasından yeniden kopyalayın. Her ortamın kendi token'ı vardır.- Bir ağ hatası çağrıyı sessizce yutuyor. Tarayıcınızın ağ sekmesinde
init()çağrısının yaptığı isteği bulun ve ne döndürdüğüne bakın.
Verify installation "Wrong environment token" diyor
Trafik geliyor, ancak başka bir ortama ait bir token taşıyor. Bu neredeyse her zaman yanlış ortamın Installation sayfasından kopyalanmış bir kod parçacığıdır, örneğin Staging kod parçacığının Production yayınına yapıştırılması. Panel kenar çubuğundaki ortam değiştiriciyle gerçekten istediğiniz ortamı açın, kod parçacığını Settings > Installation ekranından kopyalayın ve yeniden kurun.
Verify installation "Origin not verified" diyor
Token doğru, ama istek bu uygulama için doğrulanmamış bir alan adından geldi. Verify
installation reddedilen Origin'i tam olarak adıyla gösterir. Bu size ait bir alan adıysa onu
ekleyip doğrulayın (uygulama başına bir kez kontrol edilen bir DNS TXT kaydı), sonra
Agent > Origins altında ortama atayın. localhost için buna hiç gerek yoktur: her yerde
güvenilir sayılır, böylece yerel geliştirme hiçbir kurulum olmadan çalışır.
Verify installation "Identity verification failed" diyor
Oturumlar geliyor, ancak userHash olarak geçirdiğiniz imza, bu ortam için kayıtlı Secret ile
doğrulanmıyor. Kurulum çalışıyor; etkilenen her oturum tanımlı yerine anonim olarak sunuluyor,
bu yüzden bu sorun sürerken o kullanıcılarda özellikler ve kişiselleştirme sessizce çalışmayı
bırakıyor.
İmzalama kodunuzu Kimlik doğrulamayı zorunlu kılma
bölümüyle karşılaştırın. Tarif şu: identify() işlevine geçirdiğiniz tam metnin, ortamın
Secret değeriyle üretilmiş ve onaltılık kodlanmış HMAC-SHA256 özeti. En sık görülen neden bir
tür uyuşmazlığıdır: kullanıcı kimlikleriniz tam sayıysa ve arcy.identify(String(user.id))
çağırıyorsanız, ham sayıyı değil String(user.id) değerini imzalamanız gerekir. 42 üzerinden
atılan bir imza, "42" tanımlayan bir çağrıyı doğrulamaz.
Secret değerini yeni döndürdüyseniz öncekiyle üretilen imzalar 24 saat daha doğrulanır; yani döndürmenin üzerinden 24 saat geçmediyse eski bir yayın bu hataya yol açmaz.
Özel bir özellik hiçbir yerde görünmüyor
Önce Verify installation ekranındaki unknown attributes bölümüne bakın: tanımlanmadan gelen bir özellik anahtarı kaydedilmez, orada adıyla listelenir ve hiçbir zaman sessizce saklanmaz. Kaydedilmeyen bir özellik konsolda ayrıca şunu yazar:
[arcy] identify() dropped "some_key": an attribute must be a string, number,
boolean, null, or an array of strings.Aynı belirtiyi iki farklı neden üretir:
- Anahtar hiç tanımlanmamış. Agent > Attributes altında ekleyin, sonra tekrar göndermeye başlayın. Tanımsızken gelmiş olan trafik geriye dönük doldurulmaz.
- Değer, arcy.js'in gönderebileceği bir biçimde değil (iç içe bir nesne, bir işlev, bir
Date).identify()işlevine geçirmeden önce değeri bir metne, sayıya, mantıksal değere,nulldeğerine veya metin dizisine indirgeyin.
identify() veya updateUser() hiçbir şey yapmıyor gibi
Konsolda şunlara bakın:
[arcy] identify() needs a user id. Ignoring the call.
[arcy] identify() was called before init(). Ignoring.İlki, kullanıcı kimliği argümanının boş, undefined ya da metin olmadığı anlamına gelir.
İkincisi, identify() çağrısının arcy.init() tamamlanmadan çalıştığını söyler; çoğunlukla
kimlik durumunuzun yüklenmesiyle betik etiketinin çalışması arasındaki bir yarış yüzünden.
identify() çağrısını oturum verilerinizin hazır olduğu yerden yapın ve init() o sayfada daha
önce en az bir kez çağrılmış olsun.
Herhangi bir identify() veya identifyAnonymous() çağrısından önce çalışan updateUser()
tasarım gereği hiçbir şey yapmaz: güncellenecek bir profil henüz yoktur, dolayısıyla hiçbir şey
gönderilmez.
Sırada ne var
- Hızlı başlangıç: bu çözümlerin varsaydığı kurulumun tam anlatımı