質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

13038閲覧

Chrome拡張機能、Manifest.json Ver.3(MV3)で読み込み時に”Service worker registration failed”となる

stcamp

総合スコア13

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2021/02/18 12:43

編集2021/03/10 12:58

前提・実現したいこと

chromeの拡張機能開発の勉強中、いきなり壁にぶつかりました。
公式ドキュメント中のサンプルで、機能拡張アイコンをクリックでポップアップを表示させることは問題なくできました。
その簡単なカスタマイズとして、アイコンクリックでアラートメッセージを出そうとしているのですが、以下のエラーメッセージが出て立ち往生中です。

発生している問題・エラーメッセージ

Service worker registration failed

Service workerの登録に失敗している、ということはわかりますが、何が原因なのかが不明です。
(下記manifest.jsonの"sample.js"が黄色でハイライト表示されます)
manifest.jsonやsample.jsで足りない記述や間違っている部分などご指摘いただけましたら幸いです。

該当のソースコード

json

1//manifest.json 2{ 3 "name": "Hello Extensions", 4 "description" : "Base Level Extension", 5 "version": "1.0", 6 "manifest_version": 3,//Ver.88 later 7 "permissions": [ 8 "activeTab" 9 ], 10 "action": { 11 "default_icon": "icon_32.png" 12 }, 13 "icons": { 14 "16": "icon_16.png", 15 "32": "icon_32.png", 16 "48": "icon_48.png", 17 "128": "icon_128.png" 18 }, 19 "background": { 20 "service_worker": "sample.js" 21 } 22}

javascript

1//sample.js 2const test = "test"

※表題のエラーを通過させるため、JSファイルの内容は上記のようにシンプルな記述にしています。

試したこと

以下のようにbackgroundをcontent_scriptsに差し替えた際はサイトの読み込み時にアラートが表示されました。
(正常動作)

その他、末尾にセミコロンを付けてみても同様のエラー。

json

1"content_scripts": [ 2 { 3 "matches": ["<all_urls>"], 4 "js": ["sample.js"] 5 } 6]

javascript

1//sample.js 2window.onload = () => { 3 alert("test") 4}

補足情報(FW/ツールのバージョンなど)

Chromeのバージョンは88.0.4324.182です。

2021.03.10 追記
Qiita:「自作のChrome拡張機能をManifestV3に移行してみた」にて、同様の現象を経験された方がいらっしゃいました。
JSファイルはmanifest.jsonと同階層でないといけないという記述がありましたが、そもそも同階層に配置しているにも関わらずエラーとなっているので原因がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

サービスワーカーに下記のように書くと、エラーが発生すると言うことでしょうか?

JavaScript

1// 下記ではエラーが発生 2window.onload = () => { 3 alert("test") 4}

これは単に、サービスワーカーではDOMにアクセスできないためだと思います。

単純に読み込めているか確認するなら、

JavaScript

1console.log("OK");

などで確認するのはどうでしょうか。

投稿2021/03/15 12:44

akkie

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stcamp

2021/03/15 13:51

akkieさん > これは単に、サービスワーカーではDOMにアクセスできないためだと思います。 ありがとうございます。 確かに、DOMアクセスが原因でエラーが出ていたようです。 エラーは出なくなりましたが、ログも吐きませんでした。 まぁ、ひとまず先へ進むことができるようになったので良しとしよう、 そう自分に言い聞かせています。 あとはマニフェストの設定やServise worlerについて少しずつ調べていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問