64
votes

Comment réparer 'Unchecked runtime.lastError: Impossible d'établir la connexion. La fin réceptrice n'existe pas.

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.


3 commentaires

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


18 Réponses :


45
votes

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?


0 commentaires

28
votes

L'erreur est souvent causée par une extension Chrome. Essayez de désactiver toutes vos extensions, le problème devrait disparaître.


1 commentaires

Vrai pour moi. Je le voyais avec chaque iframe YouTube intégré, lors de l'activation de l'extension Youtube Playback Speed Control.



19
votes

Solution

Pour Chrome:

  1. Vous avez la fenêtre ouverte avec l'erreur de console, ouvrez une deuxième nouvelle fenêtre.

  2. Dans la deuxième fenêtre, accédez à: chrome: // extensions

  3. 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.

  4. Une fois que vous n'avez pas l'erreur, supprimez l'extension.


1 commentaires

Et si j'ai besoin de l'extension?



0
votes

Pour moi, l'erreur était due à l'extension onelogin chrome. Le supprimer a résolu le problème.


0 commentaires

4
votes

Cela se passait dans Chrome pour moi et j'ai découvert que c'était McAfee WebAdvisor. Une fois que je l'ai désactivé, le message a disparu: entrez la description de l'image ici


0 commentaires

9
votes

La suppression de l'extension chrome 'Udacity Frontend Feedback' a résolu le problème pour moi.


1 commentaires

même ici, j'ai oublié que c'était là.



0
votes

Extension Cacher dans mon cas - mais oui, désactivez chaque page, puis rechargez la page


0 commentaires

2
votes

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.


1 commentaires

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.



0
votes

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.


0 commentaires

0
votes

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/ .


0 commentaires

0
votes

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.


0 commentaires

10
votes

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.


0 commentaires

18
votes

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"));
});


3 commentaires

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"?



0
votes

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:

Exemple

Exemple # 2

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.


2 commentaires

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 .



0
votes

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.).


0 commentaires

3
votes

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
        }
      }
    );
  });


0 commentaires

0
votes

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

  1. installer l'extension Debugger for Chrome dans Visual Studio Code,
  2. déboguer mon code, et
  3. fermeture et réouverture de la fenêtre Chrome sans débogage. ( J'avais laissé Chrome exécuter mon application pendant le débogage. )

Solutions:

  • Arrêtez d'utiliser l'extension.
  • Actualisez la fenêtre Chrome sans débogage.
  • Utilisez un autre débogueur.

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!


0 commentaires

0
votes

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!


0 commentaires