AngularJS 和 Karma,无法调用未定义的方法 'module'

标签 angularjs gruntjs yeoman karma-runner karma-jasmine

我开始 karma 在 AngularJs 中 yeoman 脚手架。
错误“无法调用未定义的方法‘模块’”在 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 中。

最佳答案

问题是由 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表示从第一次加载时省略规范文件(当然会改变以匹配您的命名约定)。

关于AngularJS 和 Karma,无法调用未定义的方法 'module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22198390/

相关文章:

javascript - 将中间人变量传递给 grunt 文件

javascript - Yeoman (bower,grunt) - 'SockJS' 未定义

yeoman - 避免 Yeoman 生成器中的冲突

jquery - AngularJS:在部分 View 出现之前触发 $viewContentLoaded

javascript - 将 angulajs UI-Select 绑定(bind)到 UI-Grid 过滤器

javascript - 将 json 数据从 Controller 传递到指令并在 View 中显示

node.js - 在生成器完成后调用 yeoman 生成器

javascript - Angular 过滤器 + typescript

node.js - 由于 imagemin 问题,Grunt 构建失败,出了什么问题?

javascript - 找不到 Npm 模块 ""。安装了吗?