Ich benutze VueJS und Laravel für mein Projekt. Dieses Problem wurde in letzter Zeit angezeigt und zeigt sich sogar in den alten Git-Zweigen.
Dieser Fehler wird nur im Chrome-Browser angezeigt.
Ich benutze VueJS und Laravel für mein Projekt. Dieses Problem wurde in letzter Zeit angezeigt und zeigt sich sogar in den alten Git-Zweigen.
Dieser Fehler wird nur im Chrome-Browser angezeigt.
Antworten:
Ich habe alle in Chrome installierten Erweiterungen deaktiviert - funktioniert für mich. Ich habe jetzt Konsole ohne Fehler gelöscht.
Falls Sie ein Erweiterungsentwickler sind, der Ihren Weg hierher gegoogelt hat und versucht, diesen Fehler nicht mehr zu verursachen:
Das Problem ist nicht CORB, da blockierte CORs sich als Warnungen manifestieren wie -
Cross-Origin Read Blocking (CORB) blockierte die Cross-Origin-Antwort https://www.example.com/example.html mit MIME-Typ text / html. Siehe https://www.chromestatus.com/feature/5629709824032768Weitere Informationen finden .
Das Problem ist höchstwahrscheinlich eine falsch behandelte asynchrone Antwort auf runtime.sendMessage. Wie MDN sagt :
Um eine asynchrone Antwort zu senden, gibt es zwei Möglichkeiten:
- Geben Sie vom Ereignis-Listener true zurück. Dadurch bleibt die Funktion sendResponse nach der Rückkehr des Listeners gültig, sodass Sie sie später aufrufen können.
- Geben Sie ein Versprechen vom Ereignis-Listener zurück und lösen Sie es auf, wenn Sie die Antwort erhalten (oder lehnen Sie es im Fehlerfall ab).
Wenn Sie eine asynchrone Antwort senden, aber keinen dieser Mechanismen verwenden, verlässt das angegebene sendResponse
Argument den sendMessage
Gültigkeitsbereich und das Ergebnis entspricht genau der Fehlermeldung: Ihr Nachrichtenport (der Nachrichtenübermittlungsapparat) wird geschlossen, bevor die Antwort war empfangen.
Webextension-Polyfill-Autoren haben bereits im Juni 2018 darüber geschrieben .
Wenn Sie also feststellen, dass Ihre Erweiterung diese Fehler verursacht, überprüfen Sie alle Ihre onMessage-Listener genau. Einige von ihnen müssen wahrscheinlich anfangen, Versprechen zurückzugeben (es sollte ausreichen, sie als asynchron zu markieren). [Danke @vdegenne]
async/await
für Ihren Hintergrund-Listener-Rückruf verwenden. Dies ist, was für mich fehlgeschlagen ist, ich habe async
meine await
Struktur entfernt und in einen then
Strukturcode umgewandelt und jetzt funktioniert es.
return true;
am Ende meiner Funktion chrome.runtime.onMessage.addListener () hinzuzufügen und das Problem wurde gelöst! Ich verwende jQuery's $.ajax
in dieser Funktion, weshalb ich dieses Update benötige.
Wenn Sie zu chrome: // extensions / gehen , können Sie einfach jede Erweiterung einzeln umschalten und sehen, welche das Problem tatsächlich auslöst.
Wenn Sie die Erweiterung deaktiviert haben, aktualisieren Sie die Seite, auf der der Fehler angezeigt wird, und bewegen Sie die Maus oder klicken Sie. Mausaktionen sind die Dinge, die Fehler auslösen.
So konnte ich genau bestimmen, welche Erweiterung das Problem tatsächlich verursachte, und es deaktivieren.
Google Publisher Toolbar
unter Vivaldivivaldi://extensions
Post ist ziemlich alt und nicht eng mit der Entwicklung von Chrome-Erweiterungen verbunden, aber lassen Sie es hier sein.
Ich hatte das gleiche Problem beim Antworten auf eine Nachricht im Rückruf. Die Lösung besteht darin , im Hintergrundnachrichten-Listener true zurückzugeben .
Hier ist ein einfaches Beispiel für background.js . Es antwortet auf jede Nachricht von popup.js.
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
});
Hier ist popup.js , das eine Nachricht im Popup sendet. Sie erhalten Ausnahmen, bis Sie den Kommentar "return true" in der Datei background.js entfernen.
document.addEventListener("DOMContentLoaded", () => {
chrome.extension.sendMessage({action: "ping"}, function(resp) {
console.log(JSON.stringify(resp));
});
});
manifest.json , nur für den Fall :) Achten Sie auf den Abschnitt mit den Alarmberechtigungen!
{
"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
hilfreich?
This function becomes invalid when the event listener returns, unless you return true
. Was bedeutet ungültig? Wird es nicht angenommen, dass es jedes Mal erstellt wird, wenn eine Nachricht empfangen wird?
Wenn der Fehler die Erweiterung ist, verwenden Sie inkognito Ctrl+ Shift+N . Im Inkognito-Modus hat Chrome keine Erweiterungen.
UPD. Wenn Sie im Inkognito-Modus eine Erweiterung benötigen, z. B. ReduxDevTools oder eine andere, aktivieren Sie in den Erweiterungseinstellungen "Inkognito zulassen".
Für diejenigen, die hierher kommen, um diesen Fehler in Chrome 73 zu debuggen, besteht eine Möglichkeit darin, dass ab Chrome 73 Ursprungsübergreifende Anforderungen in Inhaltsskripten nicht mehr zulässig sind.
Lesen Sie mehr:
Dies betrifft viele Autoren von Chrome-Erweiterungen, die jetzt verschlüsseln müssen, um die Erweiterungen zu reparieren, da Chrome der Meinung ist, dass "unsere Daten zeigen, dass die meisten Erweiterungen von dieser Änderung nicht betroffen sind".
(Es hat nichts mit Ihrem App-Code zu tun.)
UPDATE : Ich habe das COR-Problem behoben, sehe aber immer noch diesen Fehler. Ich vermute, es ist Chrome's Schuld hier.
Dieser Fehler wird im Allgemeinen durch eine Ihrer Chrome-Erweiterungen verursacht.
Ich empfehle, diesen One-Click Extension Disabler zu installieren . Ich verwende ihn mit der Tastenkombination COMMAND (⌘)+ SHIFT (⇧)+ D-, um alle meine Erweiterungen schnell zu deaktivieren / aktivieren.
Sobald die Erweiterungen deaktiviert sind, sollte diese Fehlermeldung verschwinden.
Frieden! ✌️
Stellen Sie sicher, dass Sie die richtige Syntax verwenden.
Wir sollten die sendMessage () -Methode verwenden, nachdem wir sie angehört haben.
Hier ist ein einfaches Beispiel für contentScript.js Es sendeanfrage zu 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);
}
});
Für mich war es das Auto Tab Discard
, was diesen Fehler auf angeheftete Tabs wirft. Ich habe einen Fehlerbericht erstellt: https://github.com/rNeomy/auto-tab-discard/issues/101 .
In meinem Fall war es ein Haltepunkt, der in meiner eigenen Seitenquelle festgelegt wurde. Wenn ich den Haltepunkt entfernen oder deaktivieren würde, würde der Fehler behoben.
Der Haltepunkt befand sich in einem mäßig komplexen Teil des Rendering-Codes. Andere Haltepunkte in verschiedenen Teilen der Seite hatten keinen solchen Effekt. Ich konnte keinen einfachen Testfall ausarbeiten, der diesen Fehler immer auslöst.
Ich habe Konsolenprotokolldaten von einer Registerkarte zur anderen gesendet und brauchte die erste Konsole nicht wirklich. Die Fehlermeldung hat mich jedoch gestört, sodass ich mit der rechten Maustaste geklickt und "Keine Nachrichten von der x-Website anzeigen" ausgewählt habe. Vielleicht ist dies die einfachste Lösung :)