【问题标题】:karma + jasmine + webpack: module is not a functionkarma + jasmine + webpack:模块不是函数
【发布时间】:2015-12-06 13:50:59
【问题描述】:

由于这个错误,我无法实例化控制器,它说:

  • 模块不是函数

模块应该做的是 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 配置或项目代码中的其他位置?请增加一些清晰度。
  • 这与任何控制器代码无关,而是与配置有关。请,如果您有更具体的问题,请尝试解决不同的问题(如果您愿意,我可以帮助您),因为这与您的情况无关,并且问题已经得到解答。
  • module.exports = function(config) { 是导致您在此处报告的问题的原因吗?
  • 不,导出业力配置完全没问题,导致错误的是angular.mock.module()这个模块。

标签: angularjs karma-jasmine webpack


【解决方案1】:

实际上是 webpack 将模块 (angular.mock.module) 重写为 (module.exports),然后解决方案是不使用别名。像这样直接使用 angular.mock 函数:

angular.mock.module()

【讨论】:

  • 你是否有一个 repo 显示这一切一起工作?
  • 对不起,它在我公司的仓库中,但我会记下来给你看一个例子:)
  • 这可行,但是对于否决这个解决方案的人,你能麻烦分享一个替代方案吗??
  • 正在用 webpack 构建测试,当然module 是 commonjs 的保留字。
  • 投了反对票,因为我觉得不清楚问题中提到的问题的解决方案是什么。
猜你喜欢
  • 2017-01-14
  • 2017-08-31
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
相关资源
最近更新 更多