尝试在扩展程序中访问本地存储时发生意外错误

时间:2018-08-04 14:11:23

标签: google-chrome-extension firefox-webextensions google-chrome-storage

我正在更新我几个月前写的扩展名,当我完成时,我意识到loader.js(每次访问特定页面时加载的文件)中的本地存储将返回:

Error: "An unexpected error occurred."

这是我尝试从本地存储加载信息的部分:

chrome.storage.local.get('setting-one', result => {
  if (chrome.runtime.lastError) {
    throw new Error(chrome.runtime.lastError); // error is thrown
  ...

过去该方法没有问题,但现在没有。 Firefox就是这种情况。在Chrome上,扩展程序也不起作用,也不会从loader.js返回任何错误。我不确定API是否已更改,或者是否引入了一些有关访问本地存储的新更改。我一直在网上寻找解决方案,但是这个问题没有解决。

在扩展名页面上,我可以毫无问题地设置并获取存储中的所有信息。

1 个答案:

答案 0 :(得分:1)

似乎您的问题已解决,但是Firefox中有一个错误,我遇到过几次。尽管我今天无法根据您的情况复制它,但可能是您发生了什么事。我今天在与相同错误消息非常相似的情况下确实花了一些时间。

成功调用方法后,有时会在Firefox上看到错误Error: An unexpected error occurred
如果您还定义了catch方法以及打开并打开Pause on exceptionsPause on caught exceptions

的DevTools时

今天,在我使用的方法的最后,有了这个:

return browser.storage.local.set(storedObject)
    .then(() => console.log('Util_WebExt.saveToStorage(): '+valueName+' stored.'))
    .catch(e => console.error('Util_WebExt.saveToStorage(): '+valueName+' | error: '+e));

我确实像您的情况一样在get()上尝试过,但未显示错误。 此外,它不会显示在storage.sync上,仅显示在storage.local

在其他情况下,我在不同情况,不同方法下有相同的行为。记不清了,但是在stackoverflow上有一篇文章声称这是功能而非错误。我不知道如何。可能是被误解了。