web-dev-qa-db-fra.com

Karma lève une erreur: Impossible de charger "ng-html2js", il n'est pas enregistré

Je reçois une erreur lorsque je lance karma start:

$ karma start
INFO [karma]: Karma v0.10.2 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [preprocess]: Can not load "ng-html2js", it is not registered!
  Perhaps you are missing some plugin?

...

Mais dans mon fichier de package, j'ai "karma-ng-html2js-preprocessor": "*", et le dossier avec le code pour ce préprocesseur existe dans node_modules.

Des idées sur la façon de résoudre le problème?

36
Ph0en1x

Dans mes cas, le problème était lié au manque de karma-ng-html2js-preprocessor dans les sections karma config plugins. Dans les tutoriels, j'ai vu qu'il n'était pas nécessaire d'ajouter 'ng-html2js' à l'intérieur des plugins, mais pour moi, cela ne fonctionnait pas. 

50
Ph0en1x

Si vous démarrez et exécutez une installation globale de Karma, installée avec le drapeau -g et exécutée sans spécifier de chemin, c.-à-d. karma start path/to/config.js, assurez-vous que les plug-ins sont également installés globalement, c.-à-d. npm install -g karma-ng-html2js-preprocessor

Si vous exécutez une installation locale de Karma, c'est-à-dire path/to/karma start path/to/config.js, assurez-vous que le plug-in est également installé localement sur cette application.

22
M.K. Safi

Check out Chargement des plugins dans les docs.

Si vous omettez la propriété plugins, il essaiera de charger tous les plugins qui sont:

  1. Préfixé avec karma-.
  2. Un frère du module karma npm.

Donc, si votre structure de fichier est:

- node_modules
  - karma
  - karma-chrome-launcher
  - karma-firefox-launcher

... puisque karma-chrome-launcher et karma-firefox-launcher sont frères du module karma utilisé, et comme ils commencent tous les deux par karma-, ils seront chargés automatiquement.


Mais faites attention - si vous do avez la propriété plugins définie, cela ne fera que seulement charger les éléments définis. C'est à dire. Si vous avez plugins: ['karma-chrome-launcher'], il ne chargera pas karma-firefox-launcher.


Quelques questions à vous poser:

  1. Utilisez-vous une version locale de karma ou une version globale?
  2. Est-ce que tout est à jour? Sinon, essayez npm update ou npm uninstall -> npm install.
  3. Avez-vous des versions globales de karma-x qui remplacent les versions locales?
9
Adam Zerner

J'ai vu trop de types de réponses à ce sujet. Et je devais essayer toutes les méthodes pour enfin comprendre ce qui se passait. Je n'avais pas non plus de section plugins: dans mon karma.conf.js.

J'ai donc un projet AwesomeKarmaTests qui contient tous les fichiers contenus dans un dossier du même nom. 

AwesomeKarmaTests
\package.json
\karma.conf.js
\node_modules
            \karma
            \karma-jasmine
            ...

Le répertoire node_modules va évidemment être créé lorsque vous cd AwesomeKarmaTests et que vous exécutez npm install.

npm parcourait alors le contenu du package.json dans le dossier à partir duquel il avait été appelé et installait tous les packages répertoriés et d'autres dépendances, si nécessaire.

Contenu de mon package.json

{
  "name": "AwesomeKarmaTests",
  "version": "1.0.0",      
  "devDependencies": {
    "karma": "^1.6.0",
    "karma-jasmine": "^1.1.0",
    "karma-junit-reporter": "^1.2.0",
    "karma-ng-html2js-preprocessor": "^1.0.0",
    "karma-phantomjs-launcher": "^1.0.4"
  }
}

J'ai rencontré ce problème (Can not load "ng-html2js") initialement parce que karma était installé globalement sur mon système. L'installation globalkarma essaierait de rechercher le package karma-ng-html2js-preprocessor globalement, mais échouerait évidemment à le trouver car je n'avais pas installé le préprocesseur globalement. 

Et je ne comprenais pas ce qui se passait, car chacun des devDependencies du package.json était déjà installé dans le répertoire node_modules du dossier racine du projet. J'ai continué à exécuter le dossier karma start à partir du dossier AwesomeKarmaTests sans me rendre compte que c'était l'installation globale de karma qui était en cours d'exécution (idiot moi). 

Cependant, après avoir désinstallé karma de mon installation globale, j'ai commencé à obtenir des erreurs /c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory. C'est à ce moment que j'ai réalisé mon erreur. 

Puis j'ai changé mon approche. J'ai commencé à exécuter mes tests en utilisant la commande suivante, en spécifiant explicitement le chemin de l'installation locale de karma. 

./node_modules/karma/bin/karma start karma.conf.js du répertoire AwesomeKarmaTests. Et comme mentionné dans plusieurs autres articles, Karma a choisi ses paquets et plugins frères. 

N'oubliez donc pas d'utiliser les versions local du paquetage karma lorsque vous vous basez sur d'autres plugins ou packages installés localement, sinon karma aura du mal à identifier ce que vous voulez qu'il fasse.

0