【问题标题】:AngularJS and Karma, Cannot call method 'module' of undefinedAngularJS 和 Karma,无法调用未定义的方法“模块”
【发布时间】:2014-03-05 12:54:26
【问题描述】:

我在 AngularJs yeoman 脚手架内开始 karma。 错误“无法调用未定义的方法'模块'”在gruntfile.js中,由yeoman生成,第一行module.exports = function (grunt) { ...

karma.conf.js 是

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

// base path, that will be used to resolve files and exclude
basePath: '',

frameworks: ['jasmine'],


// list of files / patterns to load in the browser
files: [
    '**/*.js',
    'app/bower_components/**/*.js'
],

exclude: [ ],

reporters: ['progress'],

// web server port
port: 9876,

colors: true,

logLevel: config.LOG_INFO,

autoWatch: true,

browsers: ['Chrome'],

captureTimeout: 60000,

singleRun: false
});
};

angular.js 包含在 bower_components 中。

【问题讨论】:

    标签: angularjs gruntjs yeoman karma-runner karma-jasmine


    【解决方案1】:

    问题是由files 声明引起的。因为您加载了**/*.js,所以您随后包含的凉亭组件是不必要的(它已经在第一次调用时加载了)。

    Karma 并不聪明,因此您需要先指定要加载的内容。例如,从我的一个karma.conf.js 文件中:

    files: [
        // Required libraries
        'assets/bower_components/jquery/dist/jquery.js',
        'assets/bower_components/angular/angular.js',
        'assets/bower_components/angular-resource/angular-resource.js',
        'assets/bower_components/ng-table/ng-table.js',
    
        // App under test
        'assets/javascripts/**/!(*.spec).js',
    
        // Mocks
        'test/js/lib/angular/angular-mocks.js',
    
        // Templates
        'assets/javascripts/angular/**/*.html',
    
        // Finally... tests
        'assets/javascripts/**/*.spec.js',
        'test/js/unit**/*.js'
    ],
    

    在上面,我首先明确加载所需的库。然后我在 Angular 模拟库之前加载所有非测试 JS。然后我加载模板,最后引入测试。

    您可以使用!(*.spec).js 表示法从第一次加载时省略规范文件(当然要更改以匹配您的命名约定)。

    【讨论】:

    • 很高兴这解决了您的问题。我也总是很感激你的支持:)
    【解决方案2】:

    app/bower_components/**/*.js 这一行不能正常工作,你不想使用它,因为在同一个文件夹中可能有多个.js 文件(例如常规和缩小),你不想包括所有这些

    只需手动将该行更改为所有角度文件,它应该可以工作

    app/bower_components/angular/angular.js,
    app/bower_components/angular-mocks/angular-mocks.js
    

    不要忘记包含angular-mocks,规范中有可访问的全局变量的定义 - moduleinject ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 2013-10-22
      • 1970-01-01
      相关资源
      最近更新 更多