Unchecked runtime.lastError while running storage.set: QUOTA_BYTES_PER_ITEM quota exceeded
This error comes when you use chrome.storage.sync.set...to set the data greater than 8,192 bytes for a single item as chrome.storage.sync.set allows 8,192 QUOTA_BYTES_PER_ITEM.
Use chrome.storage.local.set, to save the large data...instead of chrome.storage.sync.set.
As chrome.storage.local.set can contains 5242880 :QUOTA_BYTES.
See https://developer.chrome.com/extensions/storage
Also, you can get the alert if still want to use chrome.storage.sync.set using below code:
chrome.storage.sync.set(function() { var error = chrome.runtime.lastError; if (error) { alert(error); } });
If you are getting same warning with chrome.storage.local too, then
Reason: The data you are trying to store is greater than the allowed storage with local i.e. 5242880 QUOTA_BYTES.
Solution: You can set the permission as unlimitedStorage in manifest.json file.
"permissions": [ ..... "unlimitedStorage", ..... ],
For more regarding permission
1) https://developer.chrome.com/extensions/storage#property-managed
2) https://developer.chrome.com/extensions/permission_warnings#nowarning
As outlined by wOxxOm in his comment above, the answer is covered in the chrome.storage documentation.
Moreover, it's always a good practice to implement error handling and check for runtime.lastError
. If everything is all right, it will be undefined. If there is a problem, it will be non-empty, and chrome.runtime.lastError.message
will explain what's wrong.
Chrome added checks that chrome.runtime.lastError
is actually checked (evaluated). If not, it considers this to be an unhandled exception, and throws this error.