我无法运行我从“karma init”获得的初始karma.conf.js,因为“require not defined”尽管没有使用它

时间:2016-01-21 16:38:57

标签: macos unit-testing jasmine karma-runner karma-jasmine

我运行了一个简单的karma init并在整个过程中按下输入以获取以下karma.conf.js:

// Karma configuration
// Generated on Thu Jan 21 2016 10:32:15 GMT-0600 (CST)

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: [
        '**/*.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: ['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 simultaneous
    concurrency: Infinity
  })
}

然而,在尝试运行一个看似如下的简单测试之后:

describe('test', function() {
    it('should return true', function() {
        expect(true).toEqual('true');
    })
});

运行时,我得到以下输出:

1 01 2016 10:32:47.879:WARN [karma]: No captured browser, open http://localhost:9876/
21 01 2016 10:32:47.888:INFO [karma]: Karma v0.13.19 server started at http://localhost:9876/
21 01 2016 10:32:47.892:INFO [launcher]: Starting browser Chrome
21 01 2016 10:32:50.192:INFO [Chrome 47.0.2526 (Mac OS X 10.11.3)]: Connected on socket /#RpTiNDwYyXuP29hTAAAA with id 21512010
Chrome 47.0.2526 (Mac OS X 10.11.3) ERROR
  Uncaught ReferenceError: require is not defined
  at /Users/sgarcia/dev/karma/hello-karma/node_modules/karma-chrome-launcher/test/jsflags.spec.js:1

为什么它说不能找到requireJS尽管我没有使用它?

1 个答案:

答案 0 :(得分:3)

问题是您的文件列表:

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

这将捕获所有* .spec.js文件,这就是它找到“/Users/sgarcia/dev/karma/hello-karma/node_modules/karma-chrome-launcher/test/jsflags.spec.js”的原因这是对karma-chrome-launcher本身的开发人员的测试,它确实调用了requireJS,你可能不希望在测试套件中包含它: - )

考虑将所有测试文件放在 ./ test 中,并将karma.conf.js文件部分更改为:

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