J'ai l'erreur suivante dans la console Chrome Dev Tools à chaque chargement de page de mon application Node / Express / React:
Runtime.lastError non coché: impossible d'établir la connexion. La fin de réception n'existe pas
Cette erreur fait référence à localhost /: 1. Lorsque je passe la souris dessus, il affiche http: // localhost: 3000 /, l'adresse à laquelle je visualise l'application dans le navigateur.
Quelqu'un a une idée de ce qui se passe? La plupart des autres fils que j'ai trouvés qui évoquent cette erreur semblent être liés à quelqu'un qui essaie de développer une extension Chrome, et même dans ce cas, ils ont tendance à avoir très peu de réponses.
18 Réponses :
J'avais eu exactement la même erreur (sauf que mon application n'a pas de back-end et de front-end React), et j'ai découvert qu'elle ne provenait pas de mon application, elle provenait en fait du Chrome "Video Speed Controller" extension. Si vous n'utilisez pas cette extension, essayez de désactiver toutes vos extensions, puis de les réactiver une par une?
L'erreur est souvent causée par une extension Chrome. Essayez de désactiver toutes vos extensions, le problème devrait disparaître.
Vrai pour moi. Je le voyais avec chaque iframe YouTube intégré, lors de l'activation de l'extension Youtube Playback Speed Control.
Solution
Pour Chrome:
Vous avez la fenêtre ouverte avec l'erreur de console, ouvrez une deuxième nouvelle fenêtre.
Dans la deuxième fenêtre, accédez à: chrome: // extensions
Désactivez chaque extension en basculant (le curseur bleu en bas à droite de chaque carte), et actualisez la fenêtre avec la console après avoir basculé chaque extension.
Une fois que vous n'avez pas l'erreur, supprimez l'extension.
Et si j'ai besoin de l'extension?
Pour moi, l'erreur était due à l'extension onelogin chrome. Le supprimer a résolu le problème.
La suppression de l'extension chrome 'Udacity Frontend Feedback' a résolu le problème pour moi.
même ici, j'ai oublié que c'était là.
Extension Cacher dans mon cas - mais oui, désactivez chaque page, puis rechargez la page
C'était tab bnundler pour moi: https://chrome.google.com/webstore/detail/tab-bundler/ooajenhhhbdbcolenhmmkgmkcocfdahd
La désactivation de l'extension a résolu le problème.
Idem pour moi, extension de bundler d'onglets ... si vous utilisez edge, il affiche l'ID unique de l'extension et vous pouvez donc le trouver et le désactiver au lieu de le faire un par un comme le suggèrent d'autres réponses.
C'était quelques extensions pour moi. La désactivation puis la réactivation ont cependant résolu le problème. Grammarly était l'un d'entre eux. J'espère que les erreurs ne reviennent pas.
Je testais mon extension sur le edge://extensions/
page / tab. Le tester sur un autre onglet a résolu ce problème. Je pense que cela peut également se produire pour chrome://extensions/
.
Curieusement, pour moi, j'ai simplement désactivé toutes mes extensions et l'erreur a disparu.
Cependant, après avoir réactivé tous ceux que j'ai désactivés, l'erreur a toujours disparu.
Si vous êtes un développeur d'extension, voyez ce message d'extension Chrome qui passe: runtime.lastError non coché: impossible d'établir la connexion. La fin de réception n'existe pas
Le cœur du problème est que le comportement de l'API Chrome change et que vous devez ajouter une solution de contournement pour cela.
J'ai trouvé le même problème lors du développement des extensions Chrome. J'ai enfin trouvé le problème clé.
Runtime.lastError non coché: impossible d'établir la connexion. La fin de réception n'existe pas
Le problème clé est que lorsque background.js
envoie un message à l'onglet actif via chrome.tabs.sendMessage, le content.js
de la page n'est pas prêt ou n'est pas rechargé. Lors du débogage. Nous devons nous assurer que content.js est actif. Et ça ne peut pas être une page sans rafraîchissement, les anciennes pages ne se mettent pas à jour js lui-même
Voici mon code:
//background.js chrome.tabs.query({active: true, currentWindow: true},function(tabs) { chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { console.log(response); }); }); //content.js chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ console.log(request, sender, sendResponse); sendResponse('ææ¶å°ä½ çæ¶æ¯äºï¼'+JSON.stringify("request")); });
Dans l'exemple ci-dessus, sendResponse a été appelé de manière synchrone. Si vous souhaitez utiliser sendResponse de manière asynchrone, ajoutez return true; au gestionnaire d'événements onMessage. Alors, tu as raison.
c'est la seule réponse qui a un sens technique pour un développeur :(
J'ai le même code mais j'ai toujours l'erreur. Comment abordez-vous "Nous devons nous assurer que content.js est actif"?
Ceci est généralement causé par une extension.
Si vous ne souhaitez pas désactiver ou supprimer l'extension qui cause cette erreur, vous pouvez filtrer cette erreur spécifique en tapant -/^Unchecked\sruntime\.lastError\:\sCould\snot\sestablish\sconnection\.\sReceiving\send\sdoes\snot\sexist\.$/
dans la zone Filtre de la console:
D'après ce que j'ai vu, ce filtre restera jusqu'à ce que vous le supprimiez manuellement, vous pouvez fermer et rouvrir la console, redémarrer Chrome, etc. autant que vous le souhaitez et le filtre ne sera jamais supprimé automatiquement.
Bien, mais qu'est-ce que cela signifie réellement?
@Brad Qu'est-ce que ça veut dire? Le regex? Il filtre simplement les erreurs avec le texte Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist
.
Je reçois le message uniquement sur la première page Chrome =
Lorsque Chrome n'est pas en cours d'exécution et que je l'ouvre - soit directement, soit en double-cliquant sur une page de mon bureau.
(Je ne sais pas si cela compte, mais j'ai désactivé l'option "Continuer à exécuter les applications en arrière-plan lorsque Google Chrome est fermé".)
Donc, je suppose que c'est la tentative d'espionnage / "d'amélioration de l'expérience utilisateur" de Chrome.
Je ne sais pas ce qu'il essaie d'envoyer, mais je suis content que ce ne soit pas possible! :)
Ainsi, le deuxième (ou tout autre onglet sauf le premier) n'a pas d'erreur.
== Pas besoin de désactiver quoi que ce soit (extensions, etc.).
Il vous suffit de gérer window.chrome.runtime.lastError
dans le rappel runtime.sendMessage
. C'est aussi simple que ça, rien d'extraordinaire. J'avais passé beaucoup de temps à le réparer et j'ai finalement réalisé que cette erreur devait juste être gérée. Voici mon code:
window.chrome.runtime.sendMessage( EXTENSION_ID, { message:"---" }, // jsonable message (result) => { if (!window.chrome.runtime.lastError) { // do you work, that's it. No more unchecked error } } ); });
Runtime.lastError non coché: impossible d'établir la connexion. La fin de réception n'existe pas.
J'ai "réalisé" cette erreur après
Bien sûr, l'erreur de console réapparaît lorsque je refais les étapes 2 et 3 ci-dessus avec le débogueur pour Chrome. Cela m'encourage à utiliser d'autres débogueurs à la place. Alors je ne pense pas à tort que mon propre code a produit les erreurs de la console!
Pour moi, cela a été causé par:
Extension Iobit Surfing Protection & Ads Removal
qui vient avec le logiciel avancé de soin du système Iobit . Cependant, la console peut vous fournir des informations pertinentes sur ce que vous devez désactiver ou sur la cause de ce problème.
La cause probable de cette erreur, selon les recherches Google, est que l'extension à l'origine de l'erreur peut utiliser chrome.runtime.sendMessage (), puis essaie d'utiliser le rappel de réponse.
Erreur affichée dans la console
J'espère que cette information vous aidera. Passez une bonne journée!
Vous pouvez voir ma solution sur une dupe cette question. stackoverflow.com/questions/54181734/...
Les réponses à cette question sont toutes du genre "Cela n'a pas été causé par mon code. J'ai dû désactiver l'extension XY". Si vous recherchez une solution du point de vue d'un développeur, consultez les questions-réponses liées ci-dessus.
Ce qui a résolu mon problème était de fermer Chrome et de l'ouvrir à nouveau. Le serveur était en cours d'exécution pendant ce processus. Je suppose que l'actualisation de la page fonctionne également très bien