如何修复 TypeError: browser.storage is undefined in chrome/firefox web extension?

How to fix TypeError: browser.storage is undefined in chrome/firefox web extension?

提问人:Foobar 提问时间:4/10/2018 更新时间:3/5/2019 访问量:4072

问:

注意 - 这个问题是基于这个问题(尽管没有必要阅读上一个问题):如何在不同的HTML文件中设置textarea的值?

我有以下代码,它应该在 firefox/chrome 的本地存储中添加一个值,然后更改扩展程序的 UI(代码会根据使用的浏览器略有不同,截至目前,代码是用于 firefox 中的扩展程序):

function createSummaryBox(summary) {
    console.log("Setting textarea content to: " + summary);
    const currentSummary = {
        currentSummary: summary
    }
    browser.storage.local.set(currentSummary);
    window.location.href = '../summary_page/summary_page.html';
}

但是,每当调用此函数时,我都会收到以下错误:

ReferenceError:未定义 browser.storage

如何修复此错误?我通读了关于这种方法的 MDN 文档,所以我不确定我错过了什么。

javascript google-chrome-extension 本地存储 firefox-addon-webextensions

评论

5赞 Jaromanda X 4/10/2018
To use this API you need to include the "storage" permission in your manifest.json file.- 你这样做了吗?
0赞 Foobar 4/10/2018
哦,哎呀,我认为只有在您尝试拥有超过 5mb 的本地存储空间时才需要该权限。
0赞 Jaromanda X 4/10/2018
你一定读过一些关于MDN的不同文档,因为我在存储文档的任何地方都没有看到“5mb”的引用
1赞 Luka Čelebić 4/10/2018
您所说的 5MB 限制是 中保存的数据限制 ,您也可以通过添加权限将其删除。此外,您阅读的文档可能 developer.chrome.com/extensions/storagechrome.storage.local"unlimitedStorage"
0赞 Smile4ever 4/13/2018
stackoverflow.com/questions/46081284/ 的副本...

答:

16赞 papo 3/5/2019 #1

正如评论所建议的那样,您需要声明权限。
补充:
manifest.json

"permissions": [
    "storage"
],

或将其添加到任何现有权限:

"permissions": [
  "activeTab",
  "storage"
],

Mozilla 文档页面 Chrome 文档页面

存储 API 可用于内容脚本。
不要混淆,这不是问题,因为它在评论中链接的另一个问题中可能是重复的,但事实并非如此。