コンテンツスクリプトからのリクエストに応答すると、バックグラウンドページでこのエラーが発生します。誰かがこのエラーの原因を知っていますか?
フルスタックトレース:
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を使用しています。応答する前にDBにクエリを実行し、クエリが終了する前に他の応答を送信しません。
ありがとう、マレク
これは、接続が閉じられたときに発生します。たとえば、content_scriptが挿入されているタブを開くと、接続が開かれ、タブが閉じられてから、background_pageがメッセージを渡そうとします。タブがメッセージを受信するためにアクティブでなくなったため、失敗します。
あなたの場合、タブが閉じて新しいタブが開くと、新しいタブへの新しい接続を作成する代わりに、古いtabIdを使用してメッセージを投稿しようとしていると思います。 長寿命の接続セクション をもう一度読むことをお勧めします。
ただし、私の場合は、chrome.runtime.sendMessage(msg、responseCallbackMissingHere)にsendResponse関数を提供する必要がありました。これにより、「切断されたポートオブジェクトを使用しようとしています」というエラーが発生します。