简体   繁体   English

错误:没有“framework:browserify”的提供者! (解决:框架:browserify)

[英]Error: No provider for “framework:browserify”! (Resolving: framework:browserify)

I have an Angularjs project and I am using karma to run the tests. 我有一个Angularjs项目,我正在使用业力来运行测试。 I am running into some problems with it, getting this error: 我遇到了一些问题,得到了这个错误:

ReferenceError: Can't find variable: require
at http://localhost:9876/base/src/test/bower_components/angular-animate/index.js?b8fe1c0a06b723a75c7e596fd8a86d91965f681c:1

Reding into some forums, I was told to use karma browserify, but I am getting this error now: 在一些论坛上,我被告知使用karma browserify,但我现在收到此错误:

    28 07 2015 22:41:15.573:WARN [preprocess]: Can not load "browserify", it is not registered!
      Perhaps you are missing some plugin?
    /Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:9
          throw error('No provider for "' + name + '"!');
                ^
    Error: No provider for "framework:browserify"! (Resolving: framework:browserify)
        at error (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:22:68)
        at Object.parent.get (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:9:13)
        at get (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:54:19)
        at /Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:128:20
        at Array.forEach (native)
        at Server._start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:127:21)
        at invoke (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/node_modules/di/lib/injector.js:75:15)
        at Server.start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:92:18)
        at Function.Server.start (/Users/brunosiqueira/WebstormProjects/copcast-admin/node_modules/karma/lib/server.js:101:10)
        at Object.<anonymous> (/Applications/WebStorm.app/Contents/plugins/js-karma/js_reporter/karma-intellij/lib/intellijServer.js:10:8)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        at Module.load (module.js:355:32)
        at Function.Module._load (module.js:310:12)
        at Function.Module.runMain (module.js:501:10)
        at startup (node.js:129:16)

Does anybody know what's going on? 有人知道发生了什么吗? This is my karma.conf file: 这是我的karma.conf文件:

    {
      // Karma configuration
      // Generated on Tue May 19 2015 15:02:17 GMT+0100 (WEST)

      module.exports = function(config) {
        config.set({

          // base path that will be used to resolve all patterns (eg. files, exclude)
          basePath: '',

          plugins: [
            'karma-browserify',
            'karma-phantomjs-launcher',
            'karma-jasmine',
            'karma-ng-html2js-preprocessor',
            'karma-spec-reporter'

          ],

          // testing framework to use (jasmine/mocha/qunit/...)
          frameworks: [  'browserify','jasmine'],

          // list of files / patterns to load in the browser
          files: [
            'http://maps.googleapis.com/maps/api/js?sensor=false&language=en',
            // bower:js
            'bower_components/jquery/dist/jquery.js',
            'bower_components/bootstrap-sass/assets/javascripts/bootstrap.js',
            'bower_components/bootstrap-select/dist/js/bootstrap-select.js',
            'bower_components/angular/angular.js',
            'bower_components/angular-animate/angular-animate.js',
            'bower_components/angular-cookies/angular-cookies.js',
            'bower_components/angular-touch/angular-touch.js',
            'bower_components/angular-sanitize/angular-sanitize.js',
            'bower_components/angular-resource/angular-resource.js',
            'bower_components/angular-route/angular-route.js',
            'bower_components/angular-bootstrap/ui-bootstrap-tpls.js',
            'bower_components/angular-ui-utils/ui-utils.js',
            'bower_components/angular-ui-map/ui-map.js',
            'bower_components/angular-http-auth/src/http-auth-interceptor.js',
            'bower_components/ng-file-upload/ng-file-upload.js',
            'bower_components/ng-file-upload-shim/ng-file-upload-shim.js',
            'bower_components/angular-notify/dist/angular-notify.js',
            'bower_components/moment/moment.js',
            'bower_components/angular-gettext/dist/angular-gettext.js',
            // endbower
            'src/app/**/*.js',
            'src/app/views/**/*.html',
            'src/test/**/*.js'
          ],

          // list of files / patterns to exclude
          exclude: [
          ],

          // preprocess matching files before serving them to the browser
          // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
          preprocessors: {
            '**/*.html': ['ng-html2js'],
            '**/*.js': [ 'browserify' ]
          },
          ngHtml2JsPreprocessor: {
            // strip this from the file path
            stripPrefix: 'src/',
            // prepend this to the


            // setting this option will create only a single module that contains templates
            // from all the files, so you can load them all with module('foo')
            moduleName: 'templatesForTest'
          },

          // test results reporter to use
          // possible values: 'dots', 'progress', 'spec'
          // 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: ['PhantomJS'],


          // Continuous Integration mode
          // if true, Karma captures browsers, runs the tests and exits
          singleRun: false
        });
      };

    }

I had a similar problem: 我遇到了类似的问题:

Warning: No provider for "framework:mocha"! 警告:没有“framework:mocha”的提供者! (Resolving: framework:mocha) (解决:框架:摩卡)

This happened because I didn't include the plugin. 发生这种情况是因为我没有包含插件。 Correct config: 正确的配置:

...
singleRun: true,
plugins: ['karma-phantomjs-launcher', 'karma-mocha'], // here
frameworks: ['mocha'],
...

Also worth mentioning, you'll need to install the plugin: 另外值得一提的是,你需要安装插件:

npm install karma-mocha --save-dev

https://www.npmjs.com/package/karma-mocha https://www.npmjs.com/package/karma-mocha


After further experimentation, looks like this is the error message delivered when you haven't included the plugin for a specified framework: 经过进一步的实验,看起来这是当你没有包含指定框架的插件时传递的错误消息:

...
plugins: ['karma-phantomjs-launcher', 'karma-mocha', 'karma-chai'],
frameworks: ['mocha', 'chai'],  // Will require the plugins above
...

I had a few problems with different versions of the libraries. 我对不同版本的库有一些问题。 But in the end, I got to make to work like this: 但最后,我必须这样工作:

My package.json file: 我的package.json文件:

"karma": "0.12.0",
"karma-html2js-preprocessor": "0.1.0",
"karma-jade-preprocessor": "0.0.11",
"karma-jasmine": "0.1.5",
"karma-ng-html2js-preprocessor": "0.1.2",
"karma-phantomjs-launcher": "0.1.4",
"karma-requirejs": "0.2.1",
"karma-script-launcher": "0.1.0",
"karma-coffee-preprocessor": "0.2.1",

"brfs": "^1.2.0",
"browserify-shim": "~3.8.0",
"karma-browserify": "^3.0.0",

My karma.conf.js file: 我的karma.conf.js文件:

 // Karma configuration
 // Generated on Tue May 19 2015 15:02:17 GMT+0100 (WEST)
module.exports = function(config) {
  config.set({

// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',

// testing framework to use (jasmine/mocha/qunit/...)
frameworks: [ 'jasmine', 'browserify'],

// list of files / patterns to load in the browser
files: [
  'http://maps.googleapis.com/maps/api/js?sensor=false&language=en',
  // bower:js
  'bower_components/jquery/dist/jquery.js',
  'bower_components/bootstrap-sass/assets/javascripts/bootstrap.js',
  'bower_components/bootstrap-select/dist/js/bootstrap-select.js',
  'bower_components/angular/angular.js',
  'bower_components/angular-animate/angular-animate.js',
  'bower_components/angular-cookies/angular-cookies.js',
  'bower_components/angular-touch/angular-touch.js',
  'bower_components/angular-sanitize/angular-sanitize.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/angular-route/angular-route.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-bootstrap/ui-bootstrap-tpls.js',
  'bower_components/angular-ui-utils/ui-utils.js',
  'bower_components/angular-ui-map/ui-map.js',
  'bower_components/angular-http-auth/src/http-auth-interceptor.js',
  'bower_components/ng-file-upload/ng-file-upload.js',
  'bower_components/ng-file-upload-shim/ng-file-upload-shim.js',
  'bower_components/angular-notify/dist/angular-notify.js',
  'bower_components/moment/moment.js',
  'bower_components/angular-gettext/dist/angular-gettext.js',
  // endbower
  'src/app/**/*.js',
  'src/app/views/**/*.html',
  'src/test/**/*.js'
],

// list of files / patterns to exclude
exclude: [
],

// preprocess matching files before serving them to the browser
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
preprocessors: {
  '**/*.html': ['ng-html2js'],
  'src/**/*.js': ['browserify']
},

browserify: {
  debug: true,
  transform: [ 'brfs' ]
},
ngHtml2JsPreprocessor: {
  // strip this from the file path
  stripPrefix: 'src/',
  // prepend this to the


  // setting this option will create only a single module that contains templates
  // from all the files, so you can load them all with module('foo')
  moduleName: 'templatesForTest'
},

// test results reporter to use
// possible values: 'dots', 'progress', 'spec'
// 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: ['PhantomJS'],


// Continuous Integration mode
// if true, Karma captures browsers, runs the tests and exits
singleRun: false
  });
};

UPDATE UPDATE

I recently updated all my libraries to the most recent version and I got this error again. 我最近将所有库更新到最新版本,我再次遇到此错误。 I realized that I was missing the library browserify and watchify themselves. 我意识到我错过了浏览器库,并密切注意自己。 So I installed the two missing libraries and everything worked perfectly. 所以我安装了两个缺少的库,一切都很完美。

npm install --save-dev karma-browserify browserify watchify

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM