错误:没有为“framework:jasmine”提供程序!(解决方案:框架:jasmine)

62

我已经在Windows命令行上运行了:

npm install -g yo grunt-cli bower

npm install -g generator-angular

yo angular

我使用WebStorm开始了我的项目,在项目资源管理器中右键单击karma.conf.js文件,选择菜单项“运行karma.conf.js”并启动karma运行程序。然后出现了这个异常:

...\app\node_modules\karma\node_modules\di\lib\injector.js:9
      throw error('No provider for "' + name + '"!');
            ^
Error: No provider for "framework:jasmine"! (Resolving: framework:jasmine)

然后我在控制台中读到我也可以使用 --force,所以我尝试了一下:grunt --force

花了一些时间,但似乎没有更多的错误了。为什么--force会安装提供程序???这是在CMD中测试的。

现在grunt serve起作用了,并且它启动了我开始的应用程序的浏览器。

--force做了什么,使得'Error: No provider for "framework:jasmine"! (Resolving: framework:jasmine)' 消失了?

当我在WebStorm IDE中执行grunt时,我又遇到了以下问题:

警告:No provider for "framework:jasmine"! (Resolving: framework:jasmine) Use --force to continue.

因此,这个问题还没有解决。


@Sergio,我们已经创建了一个很好的回答,在下面得到了赞同。这应该被接受为答案吗? - grant
@grant,你的回答似乎受到了社区的赞赏。如果它解决了特定的问题,只有问题的作者才能接受该答案。顺便恭喜你获得了1k! - Sergio
@Sergio说得很有道理,谢谢:D - grant
可能是重复的问题:No provider for "framework:jasmine"! (Resolving: framework:jasmine) - try-catch-finally
10个回答

88

使用Grunt的--force选项是为了跳过karma测试,注意如果你运行grunt --force命令,它仍然会显示“完成,但有警告”。

解决方法: 在packages.json文件中添加"karma-jasmine"和"karma-chrome-launcher"(或使用的其他launcher)到devDependencies中,然后再次运行npm install命令。

npm install karma-jasmine --save-dev

npm install karma-chrome-launcher --save-dev

这将在您的项目的package.json文件中保存karma-jasmine和karma-chrome-launcher。然后,可以通过运行以下命令来安装这些软件包:

npm install

来源:No provider for "framework:jasmine"! (Resolving: framework:jasmine)


2
我遇到了和Sergio一样的问题,这个解决方案对我有用。我运行了那两个命令,然后运行了npm install,之后我就可以无错误地运行karma start karma.conf.js了。 - Cole Garstin
@ColeGarstin 谢谢,很高兴它能够正常工作。这是一个很好的观点。运行这些命令将在您的项目的package.json文件中保存karma-jasmine和karma-chrome-launcher包,可以通过npm install进行安装。 - grant
我是nodejs的新手。当你说“你的项目的package.json”时,你是指我的项目源文件夹还是“/usr/local/lib/node_modules”或其他什么地方? - Nic Cottrell
1
通常使用grunt构建的项目都会在项目的根目录中包含一个package.json文件。这个文件决定了哪些包通过npm安装到node_modules中,并可以用来跟踪项目的开发依赖。 - grant
1
这对我也起作用了。谢谢。为什么这不是被接受的答案呢? - rares.urdea
@axesdenied 很高兴听到这个消息。我在原帖中发表了评论,希望有人能接受它。 - grant

75

对于我来说,我没有全局安装Karma客户端。

npm install -g karma-cli


2
这个答案和Grant的答案结合起来解决了我的问题。 - Lothre1
与@Lothre1相同。 - Videl
从karma.conf中删除插件部分解决了我的问题。 - Raphael

16

对于那些仍然对Karma比较陌生的人(比如我),不要忘记确保已将插件添加到你的karma.conf.js文件中。在尝试了大多数其他建议的修复措施后,这个终于让我想起来了 :(

module.exports = function (config) {
  config.set({
    basePath: '',

    plugins: [
      'karma-chrome-launcher',
      'karma-jasmine'
    ],
...

希望这能帮助到某些人,尽管这个问题现在很古老,并且似乎问题的提出者也不再监视它; )


10

如果有人仍然遇到此错误,请添加回复。

Karma-cli (karma start)会出现以下错误: No provider for "framework:jasmine"! (Resolving: framework:jasmine),原因可能是以下之一:

  1. 您尚未安装karma-jasmine节点模块,并且它未在package.json的devDependencies部分中列出。

解决方案: npm install -D karma-jasmine

  1. 您的karma.config.js文件中有一个“plugins”属性数组,但该数组没有提到“karma-jasmine”。

解决方案: 在karma.config.js中将'karma-jasmine'添加到插件中,或者尽可能删除整个“plugins”属性。

plugins:['karma-jasmine']

  1. 您全局安装了'karma-cli',当您执行'karma start'时,karma试图在全局范围内查找karma-jasmine模块。 使用:npm list -g --depth=0检查全局安装的模块列表。

解决方案: 或者也可以在全局范围内安装karma-jasmine,使用'npm install -g karma-jasmine',或者从全局范围中删除karma并将其安装在本地项目范围内。在后一种情况下,您必须将以下内容添加到package.json:

"scripts" { 
 "test": "karma start"
}

使用命令 'npm run test' 或者 'npm test' 运行karma测试。


7

我曾经遇到过同样的问题。经过调查,我发现karma是在全局环境下运行的,以' /usr/' 目录作为基础文件夹。

对我有用的解决方案是使用karma-cli替换karma:

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

在启动karma后,我遇到了错误信息:“您需要包含一些实现__karma__.start方法的适配器!” - Esaith

2

如果您正在使用karma-spec-reporter并遇到以下错误:

"Error: No provider for "framework:jasmine"! (Resolving: framework:jasmine)"

请在您的karma.conf.js文件中删除:"plugins: ["karma-spec-reporter"]",这样错误就会消失。


1

1

0

npm i -D @types/es6-promise @types/es6-collections

npm i -D @types/es6-promise @types/es6-collections


0

另一种可以像我一样解决问题的方法是:

  1. 使用以下命令行安装 karma-jasmine-domnpm install karma-jasmine-dom --save-dev
  2. 在 karma.conf.js 文件中添加以下行:
module.exports = function (config) {
  config.set({
    frameworks: ['jasmine', 'jasmine-dom'],
    ...
    plugins: [
      ...
      'karma-jasmine',
      'karma-jasmine-dom',
      ...
    ]
    ...
  })
}

然后当我运行karma start时,错误就不再出现了。

希望它有所帮助。


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