在 Chrome 扩展中导入 OpenCV:cv 未定义

问题描述 投票:0回答:1

我正在尝试在我的 chrome 扩展中加载 OpenCV,但它显示为未定义,尽管其他库加载得很好。

manifest.json

{
  "manifest_version": 3,
  "name": "Screenshot App",
  "version": "1.0",
  "description": "This extension automatically takes screenshots of the screen",
  "permissions": ["activeTab", "storage", "tabs","downloads"],
  "web_accessible_resources": [
        {
            "resources": ["scripts/*"],
      "matches": ["<all_urls>"],
            "use_dynamic_url": true
        }
    ],
  "content_security_policy": {
        "extension_pages": "script-src 'self'; object-src 'self';"
    },
  "content_scripts": [
    {
      "js": ["scripts/content.js","scripts/html2canvas/html2canvas.js", "scripts/tessaract/tesseract.min.js","scripts/opencv/opencv.js"],
      "matches": ["<all_urls>"]
    }
  ],
  "icons": {
    "16": "camera.png",
    "32": "camera.png",
    "64": "camera.png",
    "128": "camera.png"
  },
  "background": {
    "service_worker": "scripts/service-worker.js"
  },
  "action": {
    "default_popup": "popup.html"
  }
}

我还尝试通过在网页本身中插入脚本来初始化它。 onload 函数被调用,当我尝试访问其中的 cv 时,它仍然抛出

ReferenceError: cv is not defined

内容.js

async function initializeCV() {
  if (initializingCVPromise) {
    return initializingCVPromise;
  }

  initializingCVPromise = new Promise(async (resolve, reject) => {
    if (document.getElementById(CONSTANTS.scriptIdCV)) {
      log("Already loaded script");
      resolve();
    } else {
      const script = document.createElement("script");
      script.id = CONSTANTS.scriptIdCV;
      script.src = chrome.runtime.getURL("scripts/opencv/opencv.js");
      (document.head || document.documentElement).appendChild(script);

      script.onload = async function () {
        log("Loaded OpenCV Script");
        log(script.src);
        onOpenCvLoaded();
        resolve();
      };
    }
  }).finally(() => {
    
  });
  return initializingCVPromise;
}
javascript opencv google-chrome-extension
1个回答
0
投票

如何解决这个问题,我尝试了所有解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.