无法读取未定义的'onBeforeRequest'属性

3
我看了其他有同样问题的问题,但是我找不到解决方法。 我的manifest.json:
{
   "background": {
      "scripts": [ "js/background.js" ],
   },
   "description": "...",
   "icons": {
      "128": "icons/128.png",
      "16": "icons/16.png",
      "48": "icons/48.png"
   },
   "manifest_version": 2,
   "name": "Name it!",
   "offline_enabled": false,
   "permissions": [ "webRequest", "webRequestBlocking", "https://www.youtube.com/*" ],
   "permissions": [ "https://www.youtube.com/*" ],
   "version": "1.0"

}

以及我的background.js文件:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        var idid = details.url;
        var vid = idid.split("watch?v=");
        var akk = vid[1];
        if (akk.includes("&") && akk.includes("=")) {
            akk = akk.split("&")[0];
        }
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "https://www.youtube.com/feeds/videos.xml?channel_id=xxx", false);
        xhr.send();
        var result = xhr.responseText;
        if(result.includes(akk)) {
            redirectUrl : "chrome-extension://"+window.location.hostname+"/html/block.html"
        }
    },
{urls: ["https://www.youtube.com/*"]},
["blocking"]);

我遇到了这个错误:
未捕获的 TypeError:不能读取未定义的属性 'onBeforeRequest'
可能出现什么问题呢?

1
我猜你已经在开发者工具中的后台页面脚本中设置了断点?如果是这样,请将其移动到侦听器内部的行上,以避免触发已知的错误。否则,请确保在chrome://extensions页面上重新加载扩展程序。 - wOxxOm
1个回答

1
您的manifest.json可能是原因。 其中"permissions"有重复条目。请尝试删除第二个条目。
 "permissions": [ "webRequest", "webRequestBlocking", "https://www.youtube.com/*" ],
 "permissions": [ "https://www.youtube.com/*" ], // remove this one

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接