2014-10-27 77 views
12

直到几天前,我的单元测试运行良好,我的代码完美无缺地在浏览器中运行。然后,我注意到了这一点后,我添加了名为“个人资料”存根模块:Karma抱怨'模块不可用'

INFO [karma]: Karma v0.12.24 server started at http://localhost:9876/ 
INFO [launcher]: Starting browser PhantomJS 
INFO [PhantomJS 1.9.7 (Mac OS X)]: Connected on socket 7W-0vnkWZaWxYYtwFrhT with id 9336780 
PhantomJS 1.9.7 (Mac OS X) ERROR 
    Error: [$injector:nomod] Module 'profile' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument. 

现在,我意识到这是地球上最常见的AngularJS的错误,我已经在调试这个得到相当不错的,但对于我的生活我不能让它消失。细节:

  • 该代码在浏览器中正常工作,没有错误。
  • 噶拿起我的文件是这样的:

    'node_modules/angular/angular.js', 
        'node_modules/angular-mocks/angular-mocks.js', 
        'node_modules/angular-ui-router/release/angular-ui-router.js', 
        'node_modules/angular-bootstrap/ui-bootstrap.js', 
        'node_modules/angular-ui-form-validation/dist/angular-ui-form-validation.js', 
        'node_modules/angular-animate/angular-animate.js', 
        'client/app/**/*.js' 
    
  • 主要模块有一个依赖于“个人资料”已声明。

  • profile.js,profile.controller.js和profile.controller.spec.js是由cg-angular-fullstack生成的存根,并且没有特殊的代码。默认情况下,发生器将它们全部放在主模块中,因此我将模块分别更改为“配置文件”。

我完全没有想法。如果我无法调试,我将不得不假设我的整个应用程序设计有缺陷并重新启动。 。:(

回答

20

不知怎的,噶不导入正确的顺序文件,即使它之前已经好几个星期我的分辨率为三个部分:

  1. 更名为所有模块定义* .js文件*。 module.js
  2. 改名,这不是从* .js文件* .state.js模块定义的所有UI路由器工作
  3. 顺序导入的文件:。

     'node_modules/jquery/dist/jquery.js', 
         'node_modules/angular/angular.js', 
         'node_modules/angular-mocks/angular-mocks.js', 
         'node_modules/angular-ui-router/release/angular-ui-router.js', 
         'node_modules/angular-bootstrap/ui-bootstrap.js', 
         'node_modules/angular-ui-form-validation/dist/angular-ui-form-validation.js', 
         'node_modules/angular-animate/angular-animate.js', 
    
         // client files 
         'client/app/app.module.js', 
         'client/app/app.controller.js', 
         'client/app/**/*.service.js', 
         'client/app/**/*.directive.js', 
         'client/app/**/*.module.js', 
         'client/app/**/*.state.js', 
         'client/app/**/*.controller.js', 
         'client/app/**/*.spec.js' 
    

只有这样测试才开始工作。

+0

谢谢你的工作。我确实必须首先将app/**/*。module.js放入我的特定应用程序的列表中。 – ProgrammerGuy 2017-02-03 21:01:37