Причина Uncaught Error: Попытка использовать отключенный объект порта - PullRequest
16 голосов
/ 17 марта 2011

Я получаю эту ошибку на фоновой странице при ответе на запрос из содержимого скрипта. Кто-нибудь знает, что может быть причиной этой ошибки?

Полная трассировка стека:

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. Все возвращается в нормальное состояние в течение пары часов. Сценарий контента может продолжать отправлять запрос в фоновый режим, но НЕТ ответа. из фона можно отослать обратно. Можно ли как-то перехватить эту Uncaught ошибку и сбросить прослушиватель?

Я использую chrome.extension.onRequest.addListener для моего общения. Прежде чем ответить, я запрашиваю базу данных и не отправляю никаких других ответов до завершения запроса.

Спасибо, Marek

Ответы [ 2 ]

18 голосов
/ 24 июня 2011

Это происходит, когда соединение закрывается.Например, если вы открываете вкладку, в которую вставлен скрипт content_script, она открывает соединение, вкладка закрывается, а затем background_page пытается передать сообщение.Это не удастся, потому что вкладка больше не активна для приема сообщения.

В вашем случае я бы предположил, что при закрытии вкладок и открытии новых вкладок вы пытаетесь публиковать сообщения со старым tabId вместо создания новогоподключение к новой вкладке.Я бы рекомендовал снова прочитать секцию долговременных соединений .

3 голосов
/ 11 декабря 2017

В моем случае, однако, мне нужно было предоставить функцию sendResponse для chrome.runtime.sendMessage (msg, responseCallbackMissingHere), которая выдаст вам ошибку «Попытка использовать отключенный объект порта».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...