gpt4 book ai didi

javascript - 将 Angular 书面扩展迁移到 list V3

转载 作者:行者123 更新时间:2023-12-05 00:27:35 27 4
gpt4 key购买 nike

正如我上个月看到的,正如谷歌开发团队所说,manifest V3 现在已准备好投入生产。但我认为文档不完整( https://developer.chrome.com/docs/extensions/mv3/intro/mv3-migration )或不是最新的。我正在尝试学习如何使用 angular、typescript 和 Webpack 开发扩展,而且,我希望扩展使用 manifest v3。我使用本教程作为引用(https://medium.com/angular-in-depth/chrome-extension-with-angular-why-and-how-778200b87575)。我想以某种方式保持本教程中的相同步骤,而不是转移太多。
我的扩展是一个生成的 Angular 项目,我的背景是用 typescript 编写的,并使用 Webpack 在 js 中编译。
list .json

{
"name": "Great Extension",
"version": "1.0",
"description": "Build an Extension with Angular",
"manifest_version": 3,
"permissions": [
"activeTab",
"webNavigation",
"storage"
],
"background": {
"service_worker":"background.js"
},
"action": {
"default_popup": "index.html"
},
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self' "
}
}
背景.ts
  chrome.storage.sync.set({ color: '#3aa757' });

chrome.webNavigation.onCompleted.addListener(() => {
chrome.tabs.query({ active: true, currentWindow: true }, ([{ id }]) => {
chrome.pageAction.show(id);
});
}, { url: [{ urlMatches: 'google.com' }] });
});
自定义 webpack.config.js
module.exports = {
entry: { background: 'src/background.ts' },
}
我的 background.js 看起来像这样:

if (window === null || typeof window !== "object") {
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["background"],{

/***/ "EtE5":
/*!***************************!*\
!*** ./src/background.ts ***!
\***************************/
/*! no static exports found */
/***/ (function(module, exports) {

var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
chrome.runtime.onInstalled.addListener(function () {
chrome.storage.sync.set({ color: '#3aa757' });
chrome.webNavigation.onCompleted.addListener(function () {
chrome.tabs.query({ active: true, currentWindow: true }, function (_a) {
var _b = __read(_a, 1), id = _b[0].id;
chrome.pageAction.show(id);
});
}, { url: [{ urlMatches: 'google.com' }] });
});


/***/ })

},[["EtE5","runtime"]]]);
//# sourceMappingURL=background.js.map

}
  • 但是,如果我尝试在 Google Canary chrome://extension 中加载它,我会收到一条错误消息,指出
  • window is not defined
    我搜索并发现服务人员不支持该窗口。
  • 我尝试将工作箱与 Webpack 一起使用,但我再次收到一些谷歌错误消息。
  • TypeError: Failed to execute 'addAll' on 'Cache': Request scheme 'chrome-extension'
    我知道 background.js 需要成为服务人员,但我找不到任何解决方案来解决我的问题并帮助我。
    在 list V3 中是否有任何实际可行的解决方案?

    最佳答案

    添加 optimization.runtimeChunk = false在我的情况下有效。
    自定义 webpack.config.js

    module.exports = {
    entry: { background: 'src/background.ts' },
    optimization: {
    runtimeChunk: false
    }
    }

    关于javascript - 将 Angular 书面扩展迁移到 list V3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66441384/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com