Javascript Chrome扩展Chrome.storage.sync.get未定义

Javascript Chrome扩展Chrome.storage.sync.get未定义,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在开发一个chrome扩展,它要求用户输入自己的密钥,这些密钥必须保存在扩展的选项中。但是,每当我尝试运行options.js时,都会出现以下错误: 未捕获的TypeError:无法读取未定义的属性“sync” 在HTMLDocument.restore_选项中(options.js:15) 我已经更新了manifest.json中的权限,重新加载了扩展并重新启动了浏览器。这是我的第一个chrome扩展,但我已经阅读了所有教程和其他与此相关的问题,无法找出我做得不正确的地方 这是我的密码:

我正在开发一个chrome扩展,它要求用户输入自己的密钥,这些密钥必须保存在扩展的选项中。但是,每当我尝试运行options.js时,都会出现以下错误:

未捕获的TypeError:无法读取未定义的属性“sync” 在HTMLDocument.restore_选项中(options.js:15)

我已经更新了manifest.json中的权限,重新加载了扩展并重新启动了浏览器。这是我的第一个chrome扩展,但我已经阅读了所有教程和其他与此相关的问题,无法找出我做得不正确的地方

这是我的密码:

manifest.json:

{
  "manifest_version": 2,
  "name": "Web Acknowledgement",
  "permissions": [
    "storage"
  ],
  "options_page": "options.html",
  "options_ui": {
    "page": "options.html",
    "open_in_tab": true
  },
  "version": "1.0",
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "content_scripts": [
    {
      "matches": [
        "*://*/*",
        "file://*"
      ],
      "js": [
        "private_keys.js",
        "jquery-3.5.1.min.js",
        "content.js"
      ],
      "run_at": "document_end"
    }
  ],
  "icons": {

  },
  "permissions": [
    "tabs"
  ]
}
options.js:

  var api_key = document.getElementById('apikey').value;

  chrome.storage.sync.set({
    apiKey: api_key,
  }, function() {
    var button = document.getElementById('save');
    button.style.backgroundColor = 'green';
  });
}

function restore_options() {
  chrome.storage.sync.get({
    apiKey: '',

  }, function(items) {
    document.getElementById('apikey').value = items.apiKey;
  });
}

document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('save').addEventListener('click',
    save_options);

我想你可能会看到chrome://extensions 在这种情况下,这是一个旧错误,因此单击“全部清除”按钮将其删除。或者您可以直接以文件的形式打开options.html,这是错误的:您应该从扩展图标菜单或chrome://extensions 佩奇,谢谢你的建议!我尝试了“全部清除”来检查这是否是一个旧错误,但是当再次加载选项页面时,错误再次出现。为了澄清,我没有将选项作为文件加载,而是按照您所说的从图标菜单加载。您在manifest.json中有两个
权限
,所以我猜第二个没有
存储的
会赢。@wOxxOm我没听清楚!只是改变了它,它成功了!非常感谢你!我想你可能会看到chrome://extensions 在这种情况下,这是一个旧错误,因此单击“全部清除”按钮将其删除。或者您可以直接以文件的形式打开options.html,这是错误的:您应该从扩展图标菜单或chrome://extensions 佩奇,谢谢你的建议!我尝试了“全部清除”来检查这是否是一个旧错误,但是当再次加载选项页面时,错误再次出现。为了澄清,我没有将选项作为文件加载,而是按照您所说的从图标菜单加载。您在manifest.json中有两个
权限
,所以我猜第二个没有
存储的
会赢。@wOxxOm我没听清楚!只是改变了它,它成功了!非常感谢你!