正常に動作していたアプリでChromeのストレージを使用しています。このプロセスは非常に簡単です。ユーザーが電子メールとパスワードを入力すると、アプリはXHR要求を使用して確認し、chrome.storage.local.set
を使用してセッションを維持します。セッションが設定されたら、chrome.runtime.reload()
を使ってアプリケーションをリロードします。すべてのリロードで私はセッションがアクティブかどうかを確認するためにcheckLogin関数を使用します。それは正常に動作していた。しかし、今、私はこのエラーを取得しています:chrome.runtime.reload()の後にchrome.storage.local.getが空になりました - パッケージ化されたアプリケーション
ストレージは、ストレージ内のキーワードを見つけることができないアプリやアプリをリロードし、未定義のエラーを返した後、空になっているようです。ここで
ユーザーが認証された後に呼び出されるコード:
postLogin = function (resultData) {
if (resultData.authStatus == 1) {
chrome.storage.local.set({'userData': resultData}, function(){
console.log("session saved");
});
chrome.runtime.reload()
}
else {
$("#result").html(resultData.authMsg);
$("#result").attr('style', 'display: inline-block !important');
}
return false
}
アプリがリロードされたら、私は保存されたセッションチェック:私はエラーを取得しています。この時点で
checkLogin = function() {
console.log(chrome.storage);
chrome.storage.local.get("userData",function(result) {
userData = result.userData;
if (userData && userData.authStatus == 1) {
console.log("--- user signed In ---")
return true;
}
console.log(" ---- unable to find user session ----")
$("#auth-dialog").attr('style', 'display: inline !important');
return false;
})
}
を上記のスクリーンショットに添付されています。また、ストレージの状態を確認するのにconsole.log(chrome.storage);
を使用しました。 奇妙なことは、私は手動でコードの.get
部分が正常に動作するアプリを再起動したことです。最初は、格納されたストレージの値を取得するためにページをリロードしなければならないというエラーが表示されます。
マニフェスト:
{
...
"permissions": [ "unlimitedStorage", "clipboardRead", "clipboardWrite", "nativeMessaging" , "storage" ],
}
UPDATE:記事の見出しに述べたように
問題がchrome.storage
ではありません。主な問題はchrome.runtime.reload()
です。最初のアプリの起動後、私がchrome.runtime.reload()
に電話をかけるとすぐに、chrome.
から始まるアプリがリロードされても機能しません。
これはアプリですか、拡張機能ですか?それは1つだけでなければなりません。あなたの質問を編集して、適切なタグだけを入力してください。 – Makyen
トピックを作成するには[編集]してください:問題を再現する[mcve]を含める*。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *とバックグラウンド、コンテンツ、ポップアップスクリプト/ HTML、およびウェブページのHTML /スクリプトを含める必要があります。 (1)必要な動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここではどのような話題を聞くことができますか?](/ help/on-topic)、[ask]を参照してください。 – Makyen
コード、エラー、データを画像ではなく** text **([using code formatting](// stackoverflow.com/editing-help#code))として追加してください。画像:A)テスト用のコード/エラー/データをコピー&ペーストすることはできません。 B)コード/エラー/データの内容に基づいて検索を許可しない。 [もっと多くの理由がある](https://meta.stackoverflow.com/a/285557)。一般に、テキスト形式のコード/エラー/データ>>>>コード/エラー/データとしてのイメージ>>なし。画像は、テキストコード/エラー/データだけで伝えられない重要なものが追加された場合、コードフォーマット*のテキストに加えて*使用する必要があります。 – Makyen