未捕获的ReferenceError:在karma start karma.conf.js上未定义require

时间:2022-11-07 09:34:33

Using Karma and Jasmine for unit testing on the angular front-end of a rails app. It appears I've done everything known to man to get through this error and I'm left with a million dependencies in my package.json. Here is my Karma.conf.js:

使用Karma和Jasmine在rails应用程序的角度前端进行单元测试。看来我已经做了人类已知的所有事情来解决这个错误,我在package.json中留下了一百万个依赖项。这是我的Karma.conf.js:

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

// list of files / patterns to load in the browser
files: [
   //angular mocks
  'bower_components/angular/angular.js',
  'bower_components/angular-mocs/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',

  //load modules
  'public/app/app.js',

  //test file locations
  'app/**/*.js',
  'spec/**/*.js',
  'public/**/*.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: ['progress'],


// 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', 'Firefox'],


// 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,

plugins : [
  'karma-requirejs',
  'karma-jasmine',
  'karma-chrome-launcher',
  'karma-firefox-launcher',
  'karma-browserify'
],

frameworks: ['jasmine', 'browserify']

  })
}

Is there something obvious I'm doing wrong here? I'm hoping there is, it looks like I've halfway implemented a couple solutions here without exactly knowing what is going on. Thanks!

有什么明显的东西我在这里做错了吗?我希望有,看起来我已经在这里实现了一些解决方案而不知道发生了什么。谢谢!

I'm getting the error on my app.js file on the first line with 'require'

我在'require'的第一行上的app.js文件中收到错误

2 个解决方案

#1


7  

Browser don't understand require so you need to pre-process your files before you serve them to the browser.You can config webpack into karma.config so karma can use webpack to preprocess your files before testing. You also need karma webpack install with,

浏览器不理解require,因此您需要在将文件提供给浏览器之前对其进行预处理。您可以将webpack配置为karma.config,以便karma可以在测试之前使用webpack预处理您的文件。你还需要karma webpack安装,

npm i --save-dev karma-webpack

npm i --save-dev karma-webpack

There are many ways to do this, i did this way.

有很多方法可以做到这一点,我这样做了。

var path = require('path');
var webpackConfig = require('./webpack.config');
var entry = path.resolve(webpackConfig.context, webpackConfig.entry);
var preprocessors = {};
preprocessors[entry] = ['webpack'];
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: ['chai','mocha'],


    // list of files / patterns to load in the browser
    files: [entry],
    webpack:webpackConfig,

    // 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:preprocessors,


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // 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 simultanous
    concurrency: Infinity,
    plugins:[
      require('karma-webpack'),
      ('karma-chai'),
      ('karma-mocha'),
      ('karma-chrome-launcher')
    ]
  })
}

here is a seed i worked on with karma, webpack, angularjs.

这是我与karma,webpack,angularjs合作的种子。

take a look and good luck.

看看,祝你好运。

#2


0  

Follow this guide to set up Karma if you are using require to load your modules:

如果您使用require加载模块,请按照本指南设置Karma:

https://karma-runner.github.io/0.8/plus/RequireJS.html

or if you are using browserify for bundling, give this a try:

或者如果您使用browserify进行捆绑,请尝试:

https://github.com/nikku/karma-browserify

you may also wanna look at this question: How to test browserify project using karma/jasmine

您可能还想看看这个问题:如何使用karma / jasmine测试browserify项目

#1


7  

Browser don't understand require so you need to pre-process your files before you serve them to the browser.You can config webpack into karma.config so karma can use webpack to preprocess your files before testing. You also need karma webpack install with,

浏览器不理解require,因此您需要在将文件提供给浏览器之前对其进行预处理。您可以将webpack配置为karma.config,以便karma可以在测试之前使用webpack预处理您的文件。你还需要karma webpack安装,

npm i --save-dev karma-webpack

npm i --save-dev karma-webpack

There are many ways to do this, i did this way.

有很多方法可以做到这一点,我这样做了。

var path = require('path');
var webpackConfig = require('./webpack.config');
var entry = path.resolve(webpackConfig.context, webpackConfig.entry);
var preprocessors = {};
preprocessors[entry] = ['webpack'];
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: ['chai','mocha'],


    // list of files / patterns to load in the browser
    files: [entry],
    webpack:webpackConfig,

    // 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:preprocessors,


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // 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 simultanous
    concurrency: Infinity,
    plugins:[
      require('karma-webpack'),
      ('karma-chai'),
      ('karma-mocha'),
      ('karma-chrome-launcher')
    ]
  })
}

here is a seed i worked on with karma, webpack, angularjs.

这是我与karma,webpack,angularjs合作的种子。

take a look and good luck.

看看,祝你好运。

#2


0  

Follow this guide to set up Karma if you are using require to load your modules:

如果您使用require加载模块,请按照本指南设置Karma:

https://karma-runner.github.io/0.8/plus/RequireJS.html

or if you are using browserify for bundling, give this a try:

或者如果您使用browserify进行捆绑,请尝试:

https://github.com/nikku/karma-browserify

you may also wanna look at this question: How to test browserify project using karma/jasmine

您可能还想看看这个问题:如何使用karma / jasmine测试browserify项目