tl;dr: QUOTA_BYTES_PER_ITEM に関する同期エラーですが、アイテムが小さいため、何が問題なのかを突き止めるのに助けが必要です。
そのため、Google Chrome 拡張機能でこのエラーが発生していますが、保存しようとしているものが 400 バイトを超えないため (シリアル化されており、 JSON 文字列)、QUOTA_BYTES_PER_ITEM
isを考慮すると4096
、その制限には程遠いです。
何か間違った計算をしている (可能性が高い) か、間違ったことをしている (可能性は低い!)。
私の拡張機能のコードを表示して、 Web ストアからインストールできます
この問題で重要な部分は次の (CoffeeScript) です。
# Object: Default settings
defaultSettings =
type: 'single'
chars: 14
howmany: 1
security:
lowercase: true
uppercase: true
special: true
punctuation: true
readable: false
# Object: Current settings
paGenSettings = defaultSettings
# Function: Save Settings
saveSettings = (settings, notify) ->
if validateSettings settings, true
# Save settings using the Chrome extension storage API. Try sync, fallback to local
window.chrome.storage.sync.set { settings: settings }, () ->
if chrome.runtime.lastError && chrome.runtime.lastError.message && chrome.runtime.lastError.message.indexOf( 'MAX_WRITE_OPERATIONS_PER_HOUR' ) != -1
window.chrome.storage.local.set { settings: settings }, () ->
paGenSettings = settings
if notify
showNotification window.chrome.i18n.getMessage( 'settingsSaved' )
applySettings()
true
else
paGenSettings = settings
if notify
showNotification window.chrome.i18n.getMessage( 'settingsSaved' )
applySettings()
true
true
else
false
# Function: Get Settings
getSettings = () ->
# Get settings using the Chrome extension storage API. Try sync, fallback to local
window.chrome.storage.sync.get 'settings', (items) ->
if items.settings
settings = extend( paGenSettings, items.settings)
if validateSettings settings, false
paGenSettings = settings
applySettings()
true
else
window.chrome.storage.local.get 'settings', (items) ->
if items.settings
settings = extend( paGenSettings, items.settings)
if validateSettings settings, false
paGenSettings = settings
applySettings()
true
調べてみると、設定を保存するか、パスワードを生成すると (設定も保存されます)、次のエラーが表示されます。
storage.set 中のエラー: QUOTA_BYTES_PER_ITEM クォータを超えました。
ローカル ストレージにフォールバックしましたが、設定を同期させたいと思っています。
したがって、これがうまくいかない場合は、get/set コードを変更して、オブジェクトの代わりに、設定ごとに異なるキー/値を使用するようにしますが、この同期機能はあまり意味がないと思います。オブジェクトをサポートするために宣伝されている (そしてこれは小さい) ので、何か間違ったことをしているだけだと思っています。
ありがとうございました!