不能 运行 我从 "karma init" 得到的初始 karma.conf.js 因为 "require not defined" 尽管没有使用它

Can't run initial karma.conf.js that I get from "karma init" because of "require not defined" despite not using it

我运行一个简单的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');
    })
});

虽然它 运行s,但我得到以下输出:

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?

问题是您的文件列表:

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