我在AngularJs yeoman 脚手架中开始业力。
错误“无法调用方法'模块'未定义”位于gomanntfile.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中。
答案 0 :(得分:4)
问题是由files
声明引起的。因为您加载**/*.js
后续包含的bower组件是不必要的(它已经被第一次调用加载)。
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
表示法从第一次加载中省略规范文件(更改以匹配您的命名约定)。
答案 1 :(得分:1)
此行app/bower_components/**/*.js
无效,您不想使用它,因为同一文件夹中可能有多个.js
个文件(例如常规和缩小)我想包括所有这些
只需手动将该行更改为所有角度文件,它应该可以正常工作
app/bower_components/angular/angular.js,
app/bower_components/angular-mocks/angular-mocks.js
并且不要忘记包含angular-mocks
,可以在规范中访问全局变量的定义 - module
,inject
...