35
votes

L'inscription des travailleurs de service a échoué. Extension chromée

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"
},


1 commentaires

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


3 Réponses :


53
votes

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


2 commentaires

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



25
votes

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 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");

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 :)


0 commentaires

4
votes

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


1 commentaires

Corriger! Les travailleurs du service doivent être enregistrés au niveau racine: ils ne peuvent pas être dans un répertoire imbriqué.