Unchecked runtime.lastError: The message port closed before a response was received.

Unchecked runtime.lastError: The message port closed before a response was received.の解決策

Unchecked runtime.lastError: The message port closed before a response was received.
未チェックのruntime.lastError:メッセージポートは応答を受信する前に閉じられました。

これが消えない!

これが出る原因は、クロームのツールバーだったり、拡張機能だったりの不具合によるものが多いようだ。

だが、これはどちらかといえば警告メッセージ。


Unchecked runtime.lastError: The message port closed before a response was received.は、つまり

メッセージポートは応答を受信する前に閉じられました。

これ、同期処理、つまり、相手が応答するのを待って処理するタイプのもの。

拡張機能を書いている時に現在開いているページに対してメッセージを送って何かさせようとしている時に起きる。

ロボフォームのように現在開いている form 情報を受けとりたい場合戻りが必要になるわけだけど、クロームの chrome.tabs は、どうもうまく動いていないようだ。

別の手段でレスポンスを受け取ることができるなら、この問題は解決する。


Unchecked runtime.lastError: The message port closed before a response was received.を表示させない


これは、同期処理待ちでのトラブルで、

chrome.tabs.sendMessage(currentTab.id, message, function() {});

のようにメッセージを送り、コールバックで何かしらの処理を行おうとしたときに発生する。

上記の例では、コールバックではなにもしていない。単に処理の起動を促しているだけ。

chrome.tabs.sendMessage の書式は、

chrome.tabs.sendMessage(送り先タブID , 送るメッセージ , コールバック関数)

となっている。

つまり、コールバック処理を行うために送信先のレスポンスを待っていたが回答がないぞ、受信する前にメッセージのハンドシェイクが切られたぞというメッセージ。

なので、コールバックを必要としないのであれば、一方的に送って知らん振りすればいい。

Unchecked runtime.lastError: The message port closed before a response was received.を表示させないためにこう書きます。

chrome.tabs.sendMessage(currentTab.id, message);


コールバックをどうしても欲しい場合・・・・は、やっていないのでわからない。


スポンサーリンク