Estoy desarrollando un complemento de Google Chrome , cuando abro la interfaz de usuario emergente del complemento, muestra un error como este en la consola de devtool:
Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. Me pregunto qué debo hacer para evitar este problema. alguien dijo que background.js envía un mensaje a script.js , cuando el script.js no está listo se enfrentará a este error, verifiqué mi código y no envié ningún mensaje en background.js. así es como se ve el error en la consola de devtool.
¿Por qué Google Chrome muestra que el error proviene de HTML? ¿Es posible dejar que el seguimiento de Chrome en qué archivo js arroje este error? a partir del error y la información de seguimiento, no tengo idea de dónde está fallando y qué debo hacer para solucionarlo o evitarlo. Por cierto, no llamé a ninguna función sendMessage en el complemento. Eliminé toda la función sendMessage, este error aún no se solucionó.
//chrome.runtime.sendMessage({ action: 'shanbay_authorize' }) Después de tomarme más de horas, finalmente descubrí que esto fue lanzado por el client.js :
import {createClient} from 'connect.io'; export default createClient();esta fue una biblioteca que hace que el envío de mensajes sea simple. que debo hacer para evitar este problema? este es el código del componente que usa client.js:
import client from './client'; import getOptions from '../public/default-options'; import {read} from '../public/clipboard'; import { defineComponent } from 'vue'; export default defineComponent( { client , async compiled() { this.inline = true; this.showForm = true; const {defaultApi , autoClipboard} = await getOptions( [ 'defaultApi' , 'autoClipboard' ] ); this.query.api = defaultApi; if ( autoClipboard ) { this.query.text = read(); this.safeTranslate(); } } , ready() { setTimeout( ()=> this.$els.textarea.focus() , 200 ); },render() { } } );¿Es posible hacer que el cliente vuelva a intentarlo y no arroje un error si el lado del servidor no está listo?