清单V3-service_worker中的导入类



im试图在我的Chrome扩展中的服务工作者中导入一个类

这就是我在文件开头的内容:

/*global chrome*/
try {
importScripts("utils/utils.js");
} catch (e) {
console.log(e);
}

这就是我调用类的函数:

async function injectPopup() {
try {
let b = new Utils();
} catch (e) {
console.log(e);
}
.
.
.

控制台.log正在打印以下内容:

ReferenceError: Utils is not defined
at injectPopup (<anonymous>:4:17)
at <anonymous>:28:3

这是utils/utils.js:的内容

class utils {
test() {
console.log("foooo");
}
}

你能告诉我该怎么上课吗?目标是在同一个service_worker中有一个更干净的代码,而不是所有的逻辑,所以如果有其他更好的实践,我很想知道

谢谢!

在我的案例中有两个问题:

首先,正如wOxxOm所评论的,我需要在service_worker文件中创建一个全局变量:

/*global chrome*/
let globals = {}; // HERE
try {
importScripts("utils/Utils.js");
} catch (e) {
console.log(e);
}

并在类声明中将其添加到全局中,如下所示:

globals.Utils = class Utils {
test() {
console.log("foo");
}
}

第二个问题是,我从chrome.scripting.executeScript的函数中调用它,该函数无法工作,因为脚本在给定的选项卡Javascript中由自己执行,而在弹出的Javascript中不是,这就是找不到类的原因。

最新更新