Pas de fournisseur pour "framework: jasmine"! (Résolution: cadre: jasmin)

98

Lorsque j'exécute la commande, gruntj'obtiens l'avertissement suivant:

Running "karma:unit" (karma) task
Warning: No provider for "framework:jasmine"! (Resolving: framework:jasmine) Use --force to continue.

Quelqu'un sait-il comment résoudre ce problème?

Thalatta
la source

Réponses:

181

J'ai eu la même erreur après avoir créé un nouveau projet le générateur angulaire yeoman (yo angular).

La solution pour moi était d'ajouter "karma-jasmine" aux devDependencies dans packages.json et de relancer "npm install".

npm install karma-jasmine --save-dev

Cela a résolu le message d'erreur "Aucun fournisseur pour" framework: jasmine "!"

J'ai également dû ajouter un lanceur de navigateur karma à devDependencies, car j'ai reçu le message qu'aucun lanceur n'était installé (voir http://karma-runner.github.io/0.10/config/browsers.html ).

npm install karma-safari-launcher --save-dev

Mon packages.json ressemblait à ceci après mon action:

{
  "name": "test1",
  "version": "0.0.0",
  "dependencies": {},
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-autoprefixer": "~0.4.0",
    "grunt-bower-install": "~0.7.0",
    "grunt-concurrent": "~0.4.1",
    "grunt-contrib-clean": "~0.5.0",
    "grunt-contrib-coffee": "~0.7.0",
    "grunt-contrib-compass": "~0.6.0",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-connect": "~0.5.0",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-cssmin": "~0.7.0",
    "grunt-contrib-htmlmin": "~0.1.3",
    "grunt-contrib-imagemin": "~0.3.0",
    "grunt-contrib-jshint": "~0.7.1",
    "grunt-contrib-uglify": "~0.2.0",
    "grunt-contrib-watch": "~0.5.2",
    "grunt-google-cdn": "~0.2.0",
    "grunt-newer": "~0.5.4",
    "grunt-ngmin": "~0.0.2",
    "grunt-rev": "~0.1.0",
    "grunt-svgmin": "~0.2.0",
    "grunt-usemin": "~2.0.0",
    "jshint-stylish": "~0.1.3",
    "load-grunt-tasks": "~0.2.0",
    "time-grunt": "~0.2.1",
    "karma-ng-scenario": "^0.1.0",
    "grunt-karma": "^0.8.0",
    "karma": "^0.12.0",
    "karma-jasmine": "~0.2.2",
    "karma-safari-launcher": "~0.1.1",
    "karma-ng-html2js-preprocessor": "^0.1.0"
  },
  "engines": {
    "node": ">=0.8.0"
  },
  "scripts": {
    "test": "grunt test"
  }
}

J'ai changé la ligne suivante dans karma.conf en karma-e2e.conf pour utiliser le karma-safari-launcher:

browsers: ['Safari'],

J'espère que cela fonctionnera pour vous aussi.

Taco
la source
2
Merci! La seule chose que j'ai faite de différent, c'est que j'ai utilisé du chromenpm install karma-chrome-launcher --save-dev
Luciano
1
@KyleHayes Voici le rapport de bogue dans le projet generator-angular: github.com/yeoman/generator-angular/issues/629
cjerdonek
1
Je suis Error: No provider for "framework:karma-chrome-launcher"!après ça
David
1
Si vous avez des plugins: [...] ajoutés à karma.config.js, l'installation de karma-jasmine ne résoudra pas le problème. vous devez ajouter 'karma-jasmine' au tableau de plugins comme les plugins: ['karma-jasmine'].
Thaadikkaaran
D'après ce que j'ai compris, "npm install karma-jasmine --save-dev" n'avait aucun effet sur package.json. Alors merci pour cette solution.
Andy
37

Comme l'a dit @Taco, la solution par défaut pour ce problème est d' installer le plug - in approprié, comme ceci: npm install karma-jasmine --save-devou ceci: npm install karma-mocha --save-dev.

Cependant, cette erreur est également attendue lorsque vous exécutez une ancienne version de karma-clicar ils ont mis à jour la façon dont karma charge les plugins. Pour vous assurer que vous disposez de la dernière version, exécutez ceci:

npm install -g karma-cli
André Pena
la source
1
Cela a réglé le problème pour moi. J'avais les dépendances mentionnées précédemment, mais karma-cli était apparemment obsolète.
icfantv
1
Cela a résolu mon problème. Merci mon pote
shaikh
1
J'ai rencontré ça aussi. Evidemment, ce npm install -g karman'est pas la même chose que npm install -g karma-cli.
Peter Majeed
@PeterMajeed Après avoir installé Jasmine, j'ai pensé que je pourrais peut-être npm install -g karmamais cela ne fonctionne PAS. Vous devez utilisernpm install -g karma-cli
Coburn
34

Mon problème était dans mon karma.config.jsdossier:

plugins: [require("karma-webpack")]

Cela a empêché le karma-*chargement des autres plugins, notamment karma-jasmine.

aleclarson
la source
1
aleclarson était aussi mon problème. Comme karma-webpackc'était déjà dans mon package.json's devDependencies, j'ai commenté cette pluginsentrée dans mon karma.config.jsdossier.
dave_k_smith
31

Si votre karma.conf.jsspécifie un pluginsattribut, assurez-vous de l'ajouter karma-jasmineà la liste. Si tous les plugins sont préfixés par karma-, vous n'avez pas besoin de spécifier cet attribut car les plugins seront automatiquement chargés.

Hughes
la source
6
Merci, cela a résolu mon problème, en ajoutant karma-jasmine aux plugins!
sandip
Merci cela a fonctionné - c'est la ligne complète. plugins: ['karma-jasmine', 'karma-chrome-launcher', 'karma-spec-reporter', 'karma-coverage'],
Sam Deering
6

Cela m'est arrivé parce que Karma était installé globalement, et quand j'ai exécuté la commande karma start, il fonctionnait en fait dans / usr / ... plutôt que dans mon répertoire dev.

Dans mon cas, la solution était de supprimer le karma et d'installer karma-cli à la place.

npm remove -g karma
npm install -g karma-cli
Segev -CJ- Shmueli
la source
2

Mon problème était le "package Karma" sélectionné dans la configuration d'exécution IntelliJ. Je n'ai pas sélectionné le package karma du projet dans le dossier "node_module" du projet: entrez la description de l'image ici

Rooky
la source
C'est exactement ce que je cherchais (manquant).
vivekmore