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?
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.
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.
Check out Chargement des plugins dans les docs.
Si vous omettez la propriété plugins
, il essaiera de charger tous les plugins qui sont:
karma-
.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:
karma
ou une version globale?npm update
ou npm uninstall
-> npm install
.karma-x
qui remplacent les versions locales?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.