1

私はクロム拡張を作成していて、create-react-appを使ってプロジェクトをブートストラップしました。create-react-appビルドでchrome storage APIを使用する

一般的な問題:

私は私のアプリを反応

固有の問題でchrome.storage APIにアクセスしたい:

私は私の反応にchrome.storage APIを使用できるようにしたいですappにいくつかの設定を保存するように私のsrcディレクトリにスクリプトを作成しました。これはchrome.storage.sync.set()を呼び出しました。 'chrome' is not defined no-undefを取得しました。これは、マニフェストにこの呼び出しを行うスクリプトを含める必要があるためです。問題は、私のマニフェストにsrcのこのスクリプトを含めることができないということです。なぜなら、create-react-appがプロジェクトをビルドした後に、srcが縮小され、ファイル構造がすべて変更されるからです。

もう1つの問題は、私がsrcからインポートするcreate-reactions-app enforceですが、publicのデータが必要なため、publicから関数をインポートしてchrome API呼び出しを行うことはできません。私はcreate-react-appにeject機能があることを知っていますが、私はcreate-react-appが私に与えるビルド機能を維持したいと思います。

srcディレクトリからchrome.storage APIにアクセスしているときに、create-react-appのビルド機能を維持するにはどうすればよいですか?

答えて

3

このエラー('chrome is not defined no-undef')は糸くずれエラーのようです。 create-react-appに付随するリンターは、あなたのコードがそれを決して定義していないので、chromeは未定義だと思っています。リンターは、Chrome拡張機能ではグローバル変数なので、を定義する必要はありません。

chrome変数を使用するファイルの先頭に/* global chrome */を追加してみてください。

+0

これは実際にはリンターエラーでした。タイプエラー:未定義のプロパティ 'sync'を読み取ることができません。私のマニフェストに「ストレージ」権限が含まれていることを確認しました **編集:** 興味深いことに、私のビルド環境にエラーはなく、データは正しく保存されているようですが、私の開発環境は私にタイプエラー? – Evan

+0

@Evan 'chrome'変数は、chrome拡張機能として実行しているときにのみ定義されます。通常のWebページのように実行すると、 'chrome.storage'は定義されません。 (Chromeは 'chrome'オブジェクトを介して通常のWebページにいくつかのAPIを提供していますが)。 – Sidney

+0

ありがとう! – Evan

関連する問題