Grunt + Karma测试运行器因"ReferenceError:模块未定义"而失败

nwi*_*ler 2 angularjs gruntjs karma-runner

通过Grunt运行我们的Karma测试时,执行失败并出现以下错误:

[2013-12-30 10:14:22.690] [ERROR] config - Invalid config file!
[ReferenceError: module is not defined]
Run Code Online (Sandbox Code Playgroud)

Karma配置Gruntfile.js看起来很清晰,我从另一个项目复制它,它工作得很好.对于该karma.conf.js文件,它与其他项目之间没有区别,它可以正常工作.

我已经看过这个问题,但它没有帮助解决问题:Angular返回模块中的测试服务没有定义

我没有粘贴Grunt或Karma配置文件,因为它们对修复此问题没有任何影响.

nwi*_*ler 5

这个问题的解决方案在这里找到:https://github.com/karma-runner/grunt-karma/issues/52

基本上,该grunt-karma模块的旧版本被用作dev依赖项,在这种情况下它是版本0.4.3 - 这是来自该package.json文件的片段:

{
  "dependencies": {},
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-copy": "~0.4.1",
    "grunt-contrib-concat": "~0.3.0",
    "grunt-contrib-uglify": "~0.2.5",
    "grunt-karma": "~0.4.3",
    "matchdep": "~0.1.2",
    "karma": "~0.10.2",
    "karma-coverage": "~0.1.0",
    "karma-script-launcher": "~0.1.0",
    "karma-firefox-launcher": "~0.1.0",
    "karma-chrome-launcher": "~0.1.0",
    "karma-html2js-preprocessor": "~0.1.0",
    "karma-jasmine": "~0.1.3",
    "karma-requirejs": "~0.1.0",
    "karma-coffee-preprocessor": "~0.1.0",
    "karma-phantomjs-launcher": "~0.1.0",
    "karma-junit-reporter": "~0.1.0"
  },

  // ...
}
Run Code Online (Sandbox Code Playgroud)

显然,这个旧版本grunt-karma导致module is not defined错误.

更新此版本以使用更新的版本(0.6.2,我们在另一个工作正常的项目中使用)解决了这个问题:

"grunt-karma": "~0.6.2"
Run Code Online (Sandbox Code Playgroud)

然后npm install在项目目录中运行下载更新版本grunt-karma,之后测试运行正常.