没有提供程序"framework:jasmine"!(解析:framework:jasmine)

98

当我运行命令grunt时,我收到以下警告:

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

有谁知道如何解决这个问题吗?

6个回答

181

在使用yeoman angular生成器(yo angular)创建新项目后,我遇到了相同的错误。

对我而言,解决方法是在packages.json的devDependencies中添加"karma-jasmine",然后再次运行"npm install"。

npm install karma-jasmine --save-dev

这样就解决了"没有提供程序“framework:jasmine”!"的错误信息。

我还需要在devDependencies中添加karma浏览器启动器,因为我得到了没有安装任何启动器的消息(参见http://karma-runner.github.io/0.10/config/browsers.html)。

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

我的packages.json在执行以上操作后如下所示:

{
  "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"
  }
}
我在karma.conf和karma-e2e.conf中将以下行更改为使用karma-safari-launcher:

我在karma.conf和karma-e2e.conf中把以下行改成使用karma-safari-launcher:

browsers: ['Safari'],

我希望这对你也有用。


2
谢谢!我所做的唯一不同之处就是我使用了Chrome npm install karma-chrome-launcher --save-dev - Luciano
1
@KyleHayes 这是在 generator-angular 项目中的错误报告链接:https://github.com/yeoman/generator-angular/issues/629 - cjerdonek
1
我在执行这个操作后得到了“Error: No provider for 'framework:karma-chrome-launcher'!”的错误信息。 - David
1
如果你在 karma.config.js 中添加了插件:[...],那么安装 karma-jasmine 并不能解决问题。你必须将 'karma-jasmine' 添加到插件数组中,例如 plugins: ['karma-jasmine']。 - Thaadikkaaran
据我理解,“npm install karma-jasmine --save-dev” 对 package.json 没有产生任何影响。感谢您提供的解决方案。 - Andy

37

如@Taco所说,这个问题的默认解决方案是安装适当的插件,例如:npm install karma-jasmine --save-dev 或者 npm install karma-mocha --save-dev

不过,如果你运行的是旧版本的karma-cli,也会出现这个错误,因为他们更新了karma加载插件的方式。为确保你有最新的版本,请运行以下命令:

npm install -g karma-cli

1
这对我解决了问题。我之前已经安装了所需的依赖项,但是显然 karma-cli 已经过时了。 - icfantv
1
这解决了我的问题。谢谢伙计。 - shaikh
1
我也遇到了这个问题。显然,npm install -g karmanpm install -g karma-cli不是同一件事情。 - Peter Majeed
@PeterMajeed 安装了Jasmine之后,我以为可以通过npm install -g karma来安装,但是这样是行不通的。你必须使用npm install -g karma-cli - Cobertos

34

我的问题出现在我的karma.config.js文件中:

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

这导致其他的karma-*插件没有被加载,其中包括karma-jasmine


1
aleclarson的问题也是我的问题。由于“karma-webpack”已经在我的“package.json”的“devDependencies”中,我在“karma.config.js”文件中注释掉了这个“plugins”条目。 - dave_k_smith

32
如果你的 karma.conf.js 文件指定了 plugins 属性,请确保将 karma-jasmine 添加到列表中。如果所有插件都以 karma- 为前缀,则无需指定此属性,因为插件将自动加载。

6
谢谢,这解决了我的问题,我已将karma-jasmine添加到插件中! - sandip
谢谢,已生效 - 这是完整的代码行。 插件:['karma-jasmine','karma-chrome-launcher','karma-spec-reporter','karma-coverage'], - Sam Deering

6

这种情况发生在我全局安装了Karma,当我运行" karma start"命令时,它实际上是在/usr/...目录下运行,而不是在我的开发目录下。

对于我的情况,解决方法是删除Karma并安装Karma-cli。

npm remove -g karma
npm install -g karma-cli

2
我的问题在于IntelliJ的运行配置中选择了“Karma包”。我没有在项目的“node_module”文件夹中选择项目的karma包:enter image description here

这正是我一直在寻找的(缺失之物)。 - vivekmore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接