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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

599閲覧

Reactで外部関数 chrome.runtime.sendMessage() でエラー。ビルドできない。

TosuTosu

総合スコア49

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2019/05/07 05:08

Reactを使ってChrome拡張機能の作成をしております。

create-react-app で雛形を作成し、徐々に既存のファイルを追加しながら開発したいと考えていたのですが、
表題のとおり chrome.runtime.sendMessage() を呼び出すところで未定義エラーが出てしまい、ビルドできません。 Reactのsrcディレクトリにchromeが存在しないのでエラーが出る理由はわかるのですが、解決方法がわかりません。chromeなどの外部の関数を呼出してもビルドできる方法はないでしょうか?

不足の情報などありましたら、適宜追記していきますので何卒よろしくお願いたします。


App.js

javascript

1 2function App() { 3 return ( 4 <div className="App"> 5 <div> 6 <button onClick={() => { login() }}><h1>Login</h1></button> 7 </div> 8 </div> 9 ); 10} 11 12function login() { 13 chrome.runtime.sendMessage( 14 { type: MESSAGE_TYPE.LOGIN1 }, 15 function (response) { 16 console.log(response); 17 }); 18}

エラーメッセージ

$ yarn build yarn run v1.15.2 $ react-scripts build Creating an optimized production build... Failed to compile. ./src/App.js Line 25: 'chrome' is not defined no-undef Search for the keywords to learn more about each error. error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

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

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

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

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

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

guest

回答1

0

ベストアンサー

chromeというグローバル変数は普通のブラウザやNode.js環境にはないので、エラーとなってしまいます。とりあえずはそのファイルでchromeを使う前に/* global chrome */のようなコメントを入れて、「chromeというグローバル変数がある」と伝えることでコンパイルを通すことが可能です。

create-react-appでESLintの設定を変える方法もあるだろうけど、そちらはいったん保留ということで)

投稿2019/05/07 05:12

maisumakun

総合スコア145183

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

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

TosuTosu

2019/05/07 05:32

素早い回答をありがとうございます。 ご回答の通り、以下のソースコードのようにして問題を解決することができました。ありがとうございます! function login() { /* global chrome */ chrome.runtime.sendMessage( ... ); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問