Je ne comprends pas comment migrer de manifeste V2 à V3 dans une partie du travailleur de service. Se produit une erreur L'enregistrement des travailleurs du service a échoué
// background.js chrome.runtime.onInstalled.addListener(onInstalled);
// manifest.json "background": { "service_worker": "/script/background/background.js" },
3 Réponses :
Veuillez trouver ci-dessous la cause de votre problème spécifique et la cause de ne pas obtenir les détails de l'échec dans le journal de la console
Avant Chrome 93, le fichier du travailleur de service doit être dans le chemin racine où manifester.json est.
Il s'agit d'une limitation des spécifications des travailleurs de service, détendue pour les extensions
Si, pour une raison quelconque, vous voulez permettre à votre extension d'être utilisée dans Chrome plus ancien, le bon manifeste.json devrait ressembler à ceci: "minimum_chrome_version": "93",
"background": {
"service_worker": "js/bg/worker-loader.js",
"type": "module"
},
Si le script de travail lance une erreur à l'installation, le travailleur ne sera pas enregistré et vous n'obtiendrez pas les informations d'erreur déclenchées par votre travailleur dans la console, mais seulement Obtenez "l'échec de l'enregistrement des travailleurs de service". Ce comportement est dû à un bug bug dans les versions chrome plus tôt que Chrome 93.
Solution:
Solution limitée:
Causes typiques:
chrome
sans la déclarer dans le champ Manifest.json permissions
Dans mes expériences, si l'erreur (par exemple une erreur de syntaxe) est imbriquée profondément à l'intérieur de la capture d'essai, le problème n'est pas résolu comme suggéré. Et donc je trouve que la vraie solution peut simplement être la mise à niveau vers Chrome 93 si vous pouvez vous permettre de travailler sur la chaîne bêta, qui au moment de la rédaction est disponible sur le fonctionnaire Chrome Beta Channel . Cela installera une version bêta de Chrome côte à côte. Certes, Chrome 93 sera finalement sur le canal chromé stable, ce qui en fait un non-problème.
"minimum_chrome_version" prend une chaîne pas un nombre. Source: Developer.chrome.com/docs/extensions/mv3/manifest
Si la même erreur est toujours là après que le script a été déplacé vers le dossier racine que Woxxom l'a mentionné, vous avez probablement une erreur dans votre fichier background.js. Cependant, au moment de ce message, il n'y avait pas de message d'erreur adéquat à ce sujet, autre que l'enregistrement générique des travailleurs de service a échoué .
Essayez de suivre la solution de contournement de Siméon décrite ici / a>
Par exemple, vous pouvez envelopper votre script V2 Après cela être enregistré comme c'est aussi simple que possible et vous aurez les informations d'erreur dans la console. Dans mon cas, il semble que cela: Exemple
Happy déménagement à v3 :) background.js
dans un travailleur de service d'attraction et importer vos anciens scripts: // manifest.json
{
"name": "Throw on Register!",
"version": "1.0",
"manifest_version": 3,
"background": {
"service_worker": "background-wrapper.js"
}
}
// background-wrapper.js file
try {
importScripts("background.js");
} catch (e) {
console.error(e);
}
// background.js
console.log("start");
throw new Error("lol");
console.log("end");
Les travailleurs de service doivent être enregistrés au niveau racine: ils ne peuvent pas être dans un Répertoire imbriqué.
Puisque background.js
est un travailleur de service maintenant, il ne peut pas être dans le dossier imbriqué
Référence: https://developer.chrome. com / docs / extensions / mv3 / mv3-migration-checklist / # api_checklist
Corriger! Les travailleurs du service doivent être enregistrés au niveau racine: ils ne peuvent pas être dans un répertoire imbriqué.
Je rencontre cette erreur parce que j'ai substitué naïvement le AddListener par AddeventListener, car j'ai été instruit par mon IDE. Apparemment, la méthode "AddListener" est une méthode très correcte utilisée dans l'API Chrome et n'a rien à voir avec les méthodes liées à Dom obsolètes