Projem için VueJS ve Laravel kullanıyorum. Bu konu son zamanlarda gösterilmeye başladı ve eski git dallarında bile kendini gösteriyor.
Bu hata yalnızca Chrome tarayıcısında gösterilir.
Projem için VueJS ve Laravel kullanıyorum. Bu konu son zamanlarda gösterilmeye başladı ve eski git dallarında bile kendini gösteriyor.
Bu hata yalnızca Chrome tarayıcısında gösterilir.
Yanıtlar:
Chrome'da yüklü tüm uzantıları devre dışı bıraktım - benim için çalışıyor. Artık konsolu hatasız temizledim.
Bu hataya neden olmayı bırakmaya çalışan bir uzantı geliştiriciyseniz, burada yolunuzu araştıran bir uzantı geliştiriciyseniz:
Konudur değil CORB bloke CORS olarak tezahür uyarılar olarak benzeri -
Cross-Origin Read Blocking (CORB) , MIME tipi text / html ile https://www.example.com/example.html çapraz kaynak yanıtını engelledi . Daha fazla ayrıntı için https://www.chromestatus.com/feature/5629709824032768 bakın.
Sorun büyük olasılıkla runtime.sendMessage'a yanlış yönetilen zaman uyumsuz bir yanıttır. As MDN diyor :
Eşzamansız bir yanıt göndermek için iki seçenek vardır:
- olay dinleyicisinden true döndür. Bu, sendResponse işlevini dinleyici döndükten sonra geçerli tutar, böylece onu daha sonra çağırabilirsiniz.
- Olay dinleyicisinden bir Söz döndürür ve yanıtı aldığınızda çözümlenir (veya bir hata durumunda reddedilir).
Zaman uyumsuz bir yanıt gönderdiğinizde, ancak bu mekanizmalardan herhangi birini kullanamadığınızda, sağlanan sendResponse
argüman sendMessage
kapsam dışına çıkar ve sonuç tam olarak hata mesajının söylediği gibidir: mesaj portunuz (mesaj iletme aygıtı) yanıt verilmeden önce kapalıdır. Alınan.
Webextension-polyfill yazarları Haziran 2018'de bunun hakkında zaten yazmışlardır .
Sonuç olarak, uzantınızın bu hatalara neden olduğunu görürseniz - tüm onMessage dinleyicilerinizi yakından inceleyin. Bazılarının muhtemelen sözlerini yerine getirmeye başlaması gerekir (bunları eşzamansız olarak işaretlemek yeterli olacaktır). [Teşekkürler @vdegenne]
async/await
olarak, arka plan dinleyici geri araması için kullanmayın . Bu benim için başarısız olan şeydi, yapımı kaldırdım async
ve await
bir then
yapı koduna dönüştürdüm ve şimdi çalışıyor.
return true;
altına eklemek oldu ve sorun çözüldü! Bu işlevin içinde jQuery kullanıyorum , bu yüzden bu düzeltmeye ihtiyacım var. $.ajax
Eğer giderseniz krom: // uzantıları / , sadece ve bir seferde her uzatma biri geçiş biri aslında konuyu tetiklediğini görebilirsiniz.
Uzantıyı kapattıktan sonra, hatayı gördüğünüz sayfayı yenileyin ve fareyi hareket ettirin veya tıklayın. Fare eylemleri, hata veren şeylerdir.
Böylece hangi uzantının soruna gerçekten neden olduğunu belirledim ve devre dışı bırakabildim.
Google Publisher Toolbar
vivaldi://extensions
Gönderi oldukça eski ve Chrome uzantılarının geliştirilmesiyle yakından ilgili değil, ancak burada olmasına izin verin.
Geri aramada mesaja yanıt verirken aynı sorunu yaşadım. Çözüm, arka plan ileti dinleyicisinde true döndürmektir .
İşte background.js'nin basit bir örneği . Popup.js'deki herhangi bir mesaja yanıt verir.
chrome.runtime.onMessage.addListener(function(rq, sender, sendResponse) {
// setTimeout to simulate any callback (even from storage.sync)
setTimeout(function() {
sendResponse({status: true});
}, 1);
// return true; // uncomment this line to fix error
});
İşte pop- up'ta mesaj gönderen popup.js . Background.js dosyasındaki "true" satırının açıklamasını kaldırana kadar istisnalar alırsınız .
document.addEventListener("DOMContentLoaded", () => {
chrome.extension.sendMessage({action: "ping"}, function(resp) {
console.log(JSON.stringify(resp));
});
});
manifest.json , her ihtimale karşı :) Alarm izinleri bölümüne dikkat edin!
{
"name": "TestMessages",
"version": "0.1.0",
"manifest_version": 2,
"browser_action": {
"default_popup": "src/popup.html"
},
"background": {
"scripts": ["src/background.js"],
"persistent": false
},
"permissions": [
"alarms"
]
}
return false
yararlı olacaktır?
This function becomes invalid when the event listener returns, unless you return true
. Geçersiz ne demektir? yine de her mesaj aldığında oluşturulması gerekmiyor mu?
Buraya Chrome 73'te bu hatayı gidermek için gelenler için, bir olasılık, Chrome 73'ten itibaren içerik komut dosyalarındaki çapraz kaynak isteklerini engellemesidir.
Daha fazla okuma:
Bu durum, uzantıları düzeltmek için çabalamaya ihtiyaç duyan birçok Chrome uzantısı yazarını etkiliyor, çünkü Chrome "Verilerimiz çoğu uzantının bu değişiklikten etkilenmeyeceğini gösteriyor."
(uygulama kodunuzla ilgisi yoktur)
GÜNCELLEME : CORs sorununu çözdüm ancak yine de bu hatayı görüyorum. Bunun Chrome'un hatası olduğundan şüpheleniyorum.
Bu hata genellikle Chrome uzantılarınızdan birinden kaynaklanır.
Bu Tek Tıklamalı Uzantı Devre Dışı Bırakıcıyı yüklemenizi öneririm , tüm uzantılarımı hızlı bir şekilde devre dışı bırakmak / etkinleştirmek için COMMAND (⌘)+ SHIFT (⇧)+ D- klavye kısayoluyla kullanıyorum .
Uzantılar devre dışı bırakıldığında bu hata mesajı kaybolmalıdır.
Barış! ✌️
Doğru sözdizimini kullandığınızdan emin olun.
SendMessage () yöntemini dinledikten sonra kullanmalıyız .
İşte basit bir örnek contentScript.js için bu sendrequest app.js .
contentScript.js
chrome.extension.sendRequest({
title: 'giveSomeTitle', params: paramsToSend
}, function(result) {
// Do Some action
});
app.js
chrome.extension.onRequest.addListener( function(message, sender,
sendResponse) {
if(message.title === 'giveSomeTitle'){
// Do some action with message.params
sendResponse(true);
}
});
sendRequest
kullanımdan kaldırıldısendMessage
Benim için, Auto Tab Discard
bu hatayı sabitlenmiş sekmelere atan oldu . Bir hata raporu oluşturdum, https://github.com/rNeomy/auto-tab-discard/issues/101 .
Benim durumumda, kendi sayfa kaynağımda ayarlanmış bir kesme noktasıydı. Kesme noktasını kaldırırsam veya devre dışı bırakırsam, hata düzelir.
Kesme noktası, orta derecede karmaşık bir işleme kodu yığınındaydı. Sayfanın farklı bölümlerindeki diğer kesme noktalarının böyle bir etkisi olmadı. Her zaman bu hatayı tetikleyen basit bir test senaryosu oluşturamadım.