Unchecked runtime.lastError: The message port closed before a response was received. を回避した一例
4035 ワード
初めに
自作chrome拡張機能の制作中、とある処理をすると必ずこのエラーが出て気になっていたのですが、一行追加したら出なくなったので記念に残しておきます。
どんな処理かざっくり言いますと、
アクティブページで得た情報を、ポップアップメニューを介して拡張機能専用ウィンドウへ送信するものです。
完了したタイミングで、ポップアップ側にてエラーが出てました。
エラーを出していたコード
アクティブページ側は省略。
popup.js
const sendMessage = (id, msg) => new Promise( r => chrome.tabs.sendMessage( id, msg, s => r(s) ) );
//アクティブページの情報を取得
const res = await sendMessage( tab_id, { ... } );
//受け取ったデータを専用ウィンドウへ送信
sendMessage( window_tab_id, res );
送信後に行う処理も無いので投げっぱなし
app_window.js
chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
doSomething(message);
return;
});
エラーが出なくなったコード
popup.jsは変更なしなので省略。
受信側に一行追加します。
app_window.js
chrome.runtime.onMessage.addListener( (message, sender, sendResponse) => {
doSomething(message);
sendResponse(); // new
return;
});
特に何もなくても返信はしましょう、という事でしょうか。
最後に
あくまで一例です。
Author And Source
この問題について(Unchecked runtime.lastError: The message port closed before a response was received. を回避した一例), 我々は、より多くの情報をここで見つけました https://qiita.com/noenture/items/3978f638f2ffb8ff0995著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .