angularjs karma-runner ng-html2js

angularjs - Karma arroja un error: No se puede cargar "ng-html2js", no está registrado



karma-runner (4)

Me aparece un error cuando ejecuto el 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? ...

Pero en mi archivo de paquete tengo "karma-ng-html2js-preprocessor": "*", y la carpeta con código para este preprocesador existe en node_modules .

¿Alguna idea sobre cómo resolver el problema?


Echa un vistazo a Cargando complementos en los documentos.

Si omite la propiedad de los plugins , intentará cargar todos los complementos que sean:

  1. Prefijo con karma- .
  2. Un hermano del módulo karma npm.

Entonces, si su estructura de archivos es:

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

... ya que karma-chrome-launcher y karma-firefox-launcher son hermanos del módulo de karma que está en uso, y dado que ambos comienzan con karma- se karma- automáticamente.

Pero ten cuidado: si tienes la propiedad de los plugins definida, solo cargará las cosas que están definidas. Es decir. si tienes plugins: [''karma-chrome-launcher''] , no cargará karma-firefox-launcher .

Algunas preguntas para hacerse a sí mismo:

  1. ¿Estás usando una versión local de karma o una versión global?
  2. ¿Está todo actualizado? Si no, pruebe npm update o npm uninstall -> npm install .
  3. ¿Tienes versiones globales de karma-x que están anulando las locales?

En mi caso, el problema estaba relacionado con la falta de karma-ng-html2js-preprocessor dentro de las secciones de los plugins configuración de karma. En los tutoriales vi que no es necesario agregar ''ng-html2js'' dentro de los complementos, pero para mí no funciona sin él.


He visto demasiados tipos diferentes de respuestas sobre esto. Y tuve que probar todos los diferentes métodos para finalmente entender lo que estaba pasando. No tenía una sección de plugins: en mi karma.conf.js tampoco.

Así que tengo un proyecto AwesomeKarmaTests que contiene todos los archivos dentro de una carpeta con el mismo nombre.

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

El directorio node_modules obviamente se creará cuando cd AwesomeKarmaTests y ejecute npm install .

npm luego npm el contenido del package.json en la carpeta desde la que se invocó e instalará todos los paquetes enumerados y otras dependencias si es necesario.

Contenido de mi 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" } }

Encontré este problema ( Can not load "ng-html2js" ) inicialmente porque karma se instaló globalmente en mi sistema. La instalación global de karma trataría de buscar el paquete karma-ng-html2js-preprocessor globalmente, y obviamente no lo encontraría ya que no había instalado el pre-procesador globalmente.

Y no podía entender lo que estaba pasando, ya que todas y cada una de las devDependencies en el package.json ya estaban instaladas en el directorio node_modules dentro de la carpeta raíz del proyecto. Seguí ejecutando karma start desde la carpeta AwesomeKarmaTests sin darme cuenta de que era la instalación global de karma lo que se estaba ejecutando (tonto).

Sin embargo, después de desinstalar el karma de mi instalación global, comencé a obtener /c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory errores de /c/Users/fastasticUser/AppData/Roaming/npm/karma: No such file or directory . Fue entonces cuando me di cuenta de mi error.

Luego cambié mi enfoque. Empecé a ejecutar mis pruebas usando el siguiente comando, especificando explícitamente la ruta de la instalación local de karma.

./node_modules/karma/bin/karma start karma.conf.js del directorio AwesomeKarmaTests . Y como se menciona en varios otros mensajes, el karma eligió sus paquetes y complementos para hermanos.

Por lo tanto, recuerde utilizar las versiones locales del paquete de karma cuando dependa de otros complementos o paquetes instalados localmente , de lo contrario, karma tendrá problemas para identificar lo que quiere que haga.


Si está iniciando y ejecutando una instalación global de Karma, una que está instalada con el indicador -g , y se ejecuta sin especificar una ruta, es decir, karma start path/to/config.js , entonces asegúrese de que los complementos también estén instalados globalmente, es decir, npm install -g karma-ng-html2js-preprocessor .

Si está ejecutando una instalación local de Karma, es decir, path/to/karma start path/to/config.js , asegúrese de que el complemento también esté instalado localmente en esa aplicación.