karma + jasmine + webpack:模块不是函数
karma + jasmine + webpack: module is not a function
由于这个错误,我无法实例化控制器,它说:
- 模块不是函数
模块应该做的是作为 angular.mock 的别名,但我的问题是:
会不会重写了模块,但模块来自webpack? (module.exports)
这是我的 karma.config.js
文件:
/*global __dirname*/
// Karma configuration
var path = require('path');
var webpackConfig = require('./webpack.config');
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: __dirname,
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'src/Bundle/Resources/assets/base/base.js',
'src/**/*.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: {
'src/Bundle/Resources/assets/base/base.js': ['webpack'],
'src/**/*.spec.js': ['webpack']
},
// 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,
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-webpack')
],
webpack: {
module: {
loaders: webpackConfig.module.loaders
},
resolve: {
alias: webpackConfig.resolve.alias
},
plugins: webpackConfig.plugins
}
});
};
实际上是webpack将模块(angular.mock.module)重写为(module.exports),然后解决方案是不使用别名。像这样直接使用 angular.mock 函数:
angular.mock.module()
由于这个错误,我无法实例化控制器,它说:
- 模块不是函数
模块应该做的是作为 angular.mock 的别名,但我的问题是:
会不会重写了模块,但模块来自webpack? (module.exports)
这是我的 karma.config.js
文件:
/*global __dirname*/
// Karma configuration
var path = require('path');
var webpackConfig = require('./webpack.config');
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: __dirname,
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'src/Bundle/Resources/assets/base/base.js',
'src/**/*.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: {
'src/Bundle/Resources/assets/base/base.js': ['webpack'],
'src/**/*.spec.js': ['webpack']
},
// 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,
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-webpack')
],
webpack: {
module: {
loaders: webpackConfig.module.loaders
},
resolve: {
alias: webpackConfig.resolve.alias
},
plugins: webpackConfig.plugins
}
});
};
实际上是webpack将模块(angular.mock.module)重写为(module.exports),然后解决方案是不使用别名。像这样直接使用 angular.mock 函数:
angular.mock.module()