Причина ошибки Uncaught: попытка использовать отключенный объект порта
Я получаю эту ошибку на фоновой странице при ответе на запрос из сценария контента. Кто-нибудь знает, что может вызвать эту ошибку?
полная трассировка стека:
Uncaught Error: Attempting to use a disconnected port object chrome/RendererExtensionBindings:147
chrome.Port.postMessage chrome/RendererExtensionBindings:147
chromeHidden.Port.dispatchOnConnect.connectEvent chrome/RendererExtensionBindings:89
myExtension.foo.sendResponse.state background.js:1573
db.readTransaction.tx.executeSql.paramStr background.js:1038
это происходит только через пару часов просмотра перезагрузка расширение не помогает - не то, что это было бы решение после перезагрузки браузера chrome все возвращается к норме в течение нескольких часов сценарий контента может продолжать отправлять запрос в фоновом режиме, но нет ответа от фон может быть отправлен обратно есть ли способ, которым я мог бы поймать эту ошибку и сбросить прослушиватель?
Я использую chrome.расширение.по просьбе.addListener для моего сообщения. Прежде чем ответить, я запрашиваю DB, и я не отправляю никакого другого ответа до завершения запроса.
спасибо, Марек!--2-->
2 ответов
Это происходит, когда соединение закрывается. Например, если вы открываете вкладку с введенным content_script, она открывает соединение, вкладка закрывается, а затем background_page пытается передать сообщение. Это произойдет из-за того, что вкладка больше не активна для получения сообщения.
в вашем случае я бы предположил, что при закрытии вкладок и открытии новых вкладок вы пытаетесь отправлять сообщения со старым tabId вместо создания нового соединения с новой вкладкой. Я бы рекомендовал чтение раздел долгоживущих соединений снова.
в моем случае, однако, мне нужно было предоставить функцию sendResponse для chrome.во время выполнения.sendMessage (msg, responseCallbackMissingHere), который даст вам ошибку "попытка использовать отключенный объект порта".