未捕获的类型错误:无法读取 chrome 扩展中未定义的属性“本地”

Posted

技术标签:

【中文标题】未捕获的类型错误:无法读取 chrome 扩展中未定义的属性“本地”【英文标题】:Uncaught TypeError: Cannot read property 'local' of undefined in chrome extension 【发布时间】:2013-02-13 08:19:34 【问题描述】:

我编写了一个 Chrome 扩展程序。我不能使用 localStorage.setItemlocalStorage.getItem 用于存储和检索,因为后台和浏览器操作在不同的环境中运行 [as seen here]。

所以我决定使用 Chrome 存储 API:

var storage = chrome.storage.local;
var myTestVar = 'somevar';
var obj = ;
obj[myTestVar] = $("#somevar").val();
storage.set(obj);

产生以下错误:

未捕获的类型错误:无法读取未定义的属性“本地”

我做错了什么?

【问题讨论】:

您是否将"storage" permission 添加到清单文件中? 它完成了我的工作......!!!谢谢。你能把它作为答案发布吗。我会接受它 【参考方案1】:

确保已在清单文件中声明了所有必需的 permissions。 "storage",就你而言。

一般来说,以下步骤应该可以解决 Chrome API 明显未定义的问题:

    阅读您正在使用的 API 的文档并熟悉先决条件,通常是清单权限 (e.g. chrome.storage#manifest)。 通过查看What's new,检查您(用户的)Chrome 版本是否支持 API。 检查脚本是否在右侧context 中运行。大多数 API 仅可用于扩展程序的进程。 (chrome.storage API 也可以在内容脚本中使用) 否则,请使用您通常的调试技巧:错字、变量阴影、...

【讨论】:

【参考方案2】:

如果您尝试将应用程序作为简单的 html 页面运行,在 Chrome 中打开 HTML 文件,则会收到此错误。

在 Chrome 中正确添加应用程序(作为扩展程序)然后运行它。

【讨论】:

以上是关于未捕获的类型错误:无法读取 chrome 扩展中未定义的属性“本地”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法读取 VueJs 中未定义的属性“get”

未捕获的类型错误:无法读取切换功能中未定义的属性“prop”

未捕获的类型错误:无法读取 jquery 滑块中未定义的属性“addClass”

未捕获的类型错误:无法读取 AngularJS 和 D3 中未定义的属性“弧”

未捕获的类型错误:无法读取 React ajax 调用中未定义的属性“then”?

我该如何解决这个问题:未捕获的类型错误:无法读取 javascript 中未定义的属性“toString”