0

我正在更新几个月前写的扩展,当我完成时,我意识到本地存储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
  ...

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

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

4

1 回答 1

1

看起来你的问题已经解决了,但是我在 Firefox 中遇到了一个错误,我遇到了几次。尽管我今天无法为您的情况重现它,但它可能已经发生在您身上。我今天确实在一个非常相似的情况下失去了一些时间,并带有相同的错误消息。

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

今天我在我使用的一种方法的末尾有了这个:

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 上有一篇文章声称这是一个功能而不是错误。我不明白怎么做。大概是被误解了。

于 2020-01-16T19:50:55.600 回答