【问题标题】:Error: You need to include some adapter that implements __karma__.start method错误:您需要包含一些实现 __karma__.start 方法的适配器
【发布时间】:2014-08-04 22:22:17
【问题描述】:

我正在尝试将一些单元测试添加到我的一个项目中。

到目前为止,我已经安装并配置了 karma,并安装了 jasmine。我的test/ 文件夹中有一个测试文件。

业力服务器已经启动,浏览器页面已经准备好,但是karma run失败如下:

$ karma run karma-conf.js 
[2014-06-14 15:19:11.046] [DEBUG] config - Loading config /foo/test/karma-conf.js
Waiting for previous execution...
Chrome 35.0.1916 (Linux) ERROR
  You need to include some adapter that implements __karma__.start method!

此错误消息无法很好地 Google。

这是显而易见的,还是我需要提供更多信息?

【问题讨论】:

  • 想说明我收到此错误是由于我一开始没有注意到的预处理器语法错误。

标签: karma-runner karma-jasmine


【解决方案1】:

这似乎是一个非常普遍的错误,但在我的情况下,问题是我没有从正确的文件夹运行karma start,或者我在更改配置后没有重新启动它。

我将保留这个问题,希望它可以成为其他遇到此错误消息的人的资源。

【讨论】:

  • 对我来说也一样——运行karma start test/karma.conf.js 对我有用。对您而言,正确的目录可能不同。
  • 添加预处理器时出现此错误:{ 'src/**/*.js': ['babel'] },有什么想法吗?
  • 对我来说,将 test/**/*.{js,jsx} 更改为 test/**/*.+(js|jsx) 修复了此错误。多么奇怪!
  • 如果业力配置有错字,也会出现这样的错误
【解决方案2】:

如果您将 karma 配置文件命名为 karma.conf.js,则只需输入 karma start

否则指定文件名karma start karmafile.js

(我在正确的目录中,但没有指定文件名。)

【讨论】:

    【解决方案3】:

    您需要在 karma-conf.js 所在的文件夹中运行 karma run 或任何函数。

    【讨论】:

    • 这似乎不对。如果我在karma.conf.js 所在的src 子文件夹中运行karma start,我会收到错误[karma-server]: Server start failed on port 9876: Error: The '@angular-devkit/build-angular/plugins/karma' karma plugin is meant to be used from within Angular CLI and will not work correctly outside of it.
    【解决方案4】:

    在我的情况下,我必须将文件重命名为 karma.conf.js 然后执行 karma start

    【讨论】:

      【解决方案5】:

      karma.conf.js 文件代码格式有问题:

      files: [
          // Modules
          ,"client/bower_components/angular/angular.min.js"
          ,"client/bower_components/angular-mocks/angular-mocks.js"
          // App
          ,"client/app/app.module.js"
          // Test
          // ,"test/**/*.spec.js"
      ],
      

      files 数组中多余的逗号会导致此错误:

      You need to include some adapter that implements __karma__.start method!
      

      【讨论】:

        【解决方案6】:

        我没有从我的 karma.conf.js 所在的路径运行 karma start 命令。我切换到该文件夹​​并运行相同的命令。就这些

        【讨论】:

          【解决方案7】:

          我在 Angular.js 代码库上运行规范时遇到了这个问题。我必须运行 npm install karma-jasmine -g 才能使其正常工作。

          【讨论】:

            【解决方案8】:

            如果您键入“karma start”,则当前文件夹中必须有一个 karma.conf.js 文件。或者只是“业力开始/path/karma.conf.js”

            尝试通过“karma init /path/karma.conf.js”新建一个karmar.conf.js

            【讨论】:

              【解决方案9】:

              就我而言,我错误地将 commonjs 预处理器应用于 karma-* 模块,而来自 karma-chromekarma-firefoxadapter.js 被这样破坏了。

              很遗憾,这是一个非常普遍的错误。

              【讨论】:

              • 您能否提供更多有关您所做修复的背景信息?这可能让我现在知道我正在使用业力铬。谢谢!
              • 您是否应用了 commonjs 预处理器(是否在 karma runner 中配置)?如果是,请确保它没有应用于 karma-* 模块中的文件。
              【解决方案10】:

              我遇到了同样的错误,因为项目使用的是 Babel 6,而我忘记添加 babelrc 文件。只是分享以防万一。

              【讨论】:

                【解决方案11】:

                在我的例子中,消息实际上非常具有描述性:我忘记在配置文件中添加一个适配器,在我的例子中是 Jasmine。因此:

                module.exports = function(config) {
                  config.set({
                      browsers: ['Chrome'],
                      singleRun: true,
                      frameworks: ['jasmine'],
                      files: [
                          // ... files ...
                      ],
                      // other configs
                    });
                };
                

                【讨论】:

                  【解决方案12】:

                  您需要配置“my.conf.js”文件,因为它包含用于测试代码的所有信息。

                  你需要写的是这样的:

                  可以使用 karma init 生成配置文件:

                  $ karma init my.conf.js
                  

                  您想使用哪个测试框架? 按标签列出可能的选项。输入以移至下一个问题。

                  茉莉花

                  你想使用 Require.js 吗? 这将添加 Require.js 插件。 按标签列出可能的选项。输入以移至下一个问题。

                  没有

                  您想自动捕获浏览器吗? 按标签列出可能的选项。输入空字符串以转到下一个问题。

                  源文件和测试文件的位置是什么? 您可以使用全局模式,例如。 “js/*.js”或“test/**/*Spec.js”。 按 Enter 键移至下一个问题。

                  *.js 测试/**/*.js

                  是否应排除先前模式中包含的任何文件? 您可以使用全局模式,例如。 "**/*.swp"。

                  按 Enter 键移至下一个问题。

                  您是否希望 Karma 监视所有文件并在更改时运行测试? 按 T​​ab 键列出可能的选项。

                  是的

                  在“/Users/vojta/Code/karma/my.conf.js”生成的配置文件。

                  【讨论】:

                    【解决方案13】:

                    我必须补充一点,就我而言,业力给了我错误,因为我在其中一个父文件夹的名称中有 [方] 括号。

                    【讨论】:

                      【解决方案14】:

                      Tt 抱怨适配器可能是茉莉花或摩卡咖啡。 要么缺少适配器,要么没有正确设置,要么是适配器的过时或有问题的版本。

                      就我而言,我有一个旧版本的 mocha 2.5.3,它与 karma 1+ 不兼容。 我将 mocha 依赖更新到了最新版本 可用的 3.2.0 并且问题解决了。

                      【讨论】:

                        【解决方案15】:

                        在处理大量描述模糊的错误时,我尝试设置 basePath: '../',在更正其他错误(如被描述为对象内容错误的缺少逗号)后,最后一次更改回 basePath:'',得到了因果报应去工作。业力的错误陈述需要大量工作。实现起来并不简单。

                        【讨论】:

                          【解决方案16】:

                          我遇到了同样的问题。我的浏览器会打开,但在我的终端上它抛出了以下错误

                          30 08 2017 11:19:28.272:INFO [Chrome 58.0.3029 (Linux 0.0.0)]: Connected `enter code here`on socket 5sSs6E5KmpUVRp6LAAAB with id 93886631
                          Chrome 58.0.3029 (Linux 0.0.0) ERRORSome of your tests did a full page reload!
                          

                          我检查了我的 karma.conf.js 文件。在框架数组中,我包含了 jasmine 和 requirejs。但我只安装了 karma-jasmine。删除 requireJS 并重新运行 karma start 工作!

                          【讨论】:

                            【解决方案17】:

                            您必须在运行 start karma 时指定 karma.config.js 的目录。

                            试试

                            karma start karma.config.js

                            【讨论】:

                              【解决方案18】:

                              我的 karma.conf.js 中有一个错误的“文件”配置

                              files: ['**/*.js'],
                              

                              这捕获了 node_modules/ 中的所有文件,包括 karma-jasmine 插件的文件,因为它被视为启动时未加载的酸文件。改为

                              files: [
                                      'src/*.js',
                                      'spec/*.js'
                                  ],
                              

                              解决了我的问题

                              【讨论】:

                                【解决方案19】:

                                您必须将业力配置文件指定给业力。

                                karma start karma.config.js 
                                

                                对我有用

                                【讨论】:

                                  【解决方案20】:

                                  FWIW - 获取 karma.conf.js 的文件路径在本地为我工作,但在我的 jenkins builder 上却不行。我对为什么会出现这种情况的线索为零,但是在 jenkins 上它会抛出此错误,除非 karma.conf.js 文件位于给出 karma 命令的根目录中。我正在使用 rails 并通过 rake 任务运行 js 规范。下面的代码可能对某些人有帮助。

                                  https://gist.github.com/daino3/a39486ff8bfc1668e923

                                  【讨论】:

                                    【解决方案21】:

                                    我的问题是 karma 没有提取任何文件。在 karma.conf.js 中修复它解决了这个问题。

                                    【讨论】:

                                      【解决方案22】:

                                      同样的问题也发生在我身上,这是由于模块过时造成的。

                                      运行npm update 解决了它。

                                      【讨论】:

                                        【解决方案23】:

                                        就我而言,这根本与业力无关!我使用 ES6/babel 从 gulp 运行 karma,实际上存在代码语法错误,由我的 karma 上方的 babel 错误标记:

                                        ERROR [preprocessor.babel]: xxx.js: Unexpected token (19:83)

                                        我在我的 src 中修复了这个问题,然后 karma 又开心了。

                                        【讨论】:

                                          【解决方案24】:

                                          我也一直在为此苦苦挣扎。我想出的是由于以下原因之一而发生此错误

                                          我的问题是我的配置文件被命名为 karma.config.js 而不是 karma.conf.js

                                          如果您已安装 测试适配器,但它仍然无法正常工作,请尝试运行 karma init 并完成引导式配置设置。

                                          【讨论】:

                                            【解决方案25】:

                                            在我的例子中,配置文件名不同。因此,运行指定 conf 文件的命令解决了我的问题。

                                            >> karma start unit-tests.conf.js
                                            No captured browser, open http://localhost:9876/
                                            ...
                                            

                                            对于“PhantomJS”,在浏览器中打开指定的链接(localhost:9876)会执行测试用例。

                                            希望对您有所帮助。 :)

                                            编辑 1:我的 Karma 配置文件

                                            module.exports = function(config) {
                                              config.set({
                                            
                                                // base path that will be used to resolve all patterns (eg. files, exclude)
                                                basePath: '',
                                            
                                            
                                                // frameworks to use
                                                // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
                                                frameworks: ['jasmine'],
                                            
                                            
                                                // list of files / patterns to load in the browser
                                                files: [
                                                  './node_modules/angular/angular.js',
                                                  './node_modules/angular-ui-router/release/angular-ui-router.js',
                                                  './node_modules/angular-mocks/angular-mocks.js',
                                                  './app/services/users/users.js',
                                                  './app/app.js',
                                                  './app/services/users/users.spec.js'
                                                ],
                                            
                                            
                                                // list of files to exclude
                                                exclude: [
                                                ],
                                            
                                            
                                                // preprocess matching files before serving them to the browser
                                                // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
                                                preprocessors: {
                                                },
                                            
                                            
                                                // test results reporter to use
                                                // possible values: 'dots', 'progress'
                                                // available reporters: https://npmjs.org/browse/keyword/karma-reporter
                                                reporters: ['spec'],
                                            
                                            
                                                // web server port
                                                port: 9876,
                                            
                                            
                                                // enable / disable colors in the output (reporters and logs)
                                                colors: true,
                                            
                                            
                                                // level of logging
                                                // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
                                                logLevel: config.LOG_INFO,
                                            
                                            
                                                // enable / disable watching file and executing tests whenever any file changes
                                                autoWatch: true,
                                            
                                            
                                                // start these browsers
                                                // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
                                                browsers: ['Chrome'],
                                            
                                            
                                                // Continuous Integration mode
                                                // if true, Karma captures browsers, runs the tests and exits
                                                singleRun: false,
                                            
                                                // Concurrency level
                                                // how many browser should be started simultaneous
                                                concurrency: Infinity
                                              })
                                            }
                                            

                                            【讨论】:

                                              【解决方案26】:

                                              鉴于这是此错误消息在 google 上的第一个结果,我想我会在这里提及我的解决方案。

                                              在将 AngularJS 1.8 项目转换为 Typescript 并尝试更改我的 Karma 测试以使用 typescript 预处理器后,我收到此错误。

                                              我终于意识到添加 import angular from 'angular' 解决了 Karma 方面的问题,但随后 angular 在 webpack 的构建中显示为未定义。

                                              最终感谢this answer 提出关于那个 错误消息的问题,我将导入语句更新为import * as angular from 'angular',终于成功了! (最终我必须解决每个 typescript 文件上的每个编译错误以完全解决,自从 webpack 构建工作以来我一直有些忽略。)

                                              希望这可以帮助解决这个问题的人!

                                              【讨论】:

                                                【解决方案27】:

                                                我收到此错误是因为我需要两次相同的依赖项!

                                                删除重复的文件依赖项为我消除了错误。下面用蓝色圈起来。

                                                【讨论】:

                                                  【解决方案28】:

                                                  我遇到了同样的问题,但上述解决方案对我不起作用。我最终发现我的 karmaWebpackConfig 使用“babel-loader”作为加载器。我刚刚删除了那条线,它对我有用。

                                                  【讨论】:

                                                    猜你喜欢
                                                    • 1970-01-01
                                                    • 2013-02-26
                                                    • 2013-04-10
                                                    • 2015-09-05
                                                    • 1970-01-01
                                                    • 1970-01-01
                                                    • 1970-01-01
                                                    • 1970-01-01
                                                    相关资源
                                                    最近更新 更多