业力:错误:[$ injector:nomod]模块'app'不可用

时间:2018-04-03 15:53:25

标签: angularjs karma-runner karma-jasmine

我是Angular World的新手,也是Karma的初学者。 当我尝试运行Karma-Jasmine Unit测试时,我收到以下错误。

{
"message": "An error was thrown in afterAll\nUncaught Error: [$injector:nomod] Module 'app' 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.\nhttp://errors.angularjs.org/1.6.9/$injector/nomod?p0=app", "str": "An error was thrown in afterAll\nUncaught Error: [$injector:nomod] Module 'app' 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.\nhttp://errors.angularjs.org/1.6.9/$injector/nomod?p0=app"
}

通过各种帖子,我发现在以下情况下会发生此错误:

  1. 拼错了模块名称
  2. 忘记注册模块
  3. 忘记加载依赖项
  4. 但似乎以上问题都不适用于我的应用。我的应用程序目前非常小。我发布了几乎整个应用程序以供参考。 请在下面找到我的代码以供参考。

    app.module.js

    (function () {
    "use strict";
    
        angular
            .module("app", [
                "ngRoute",
                "ngMessages",
                "ngclipboard",
                "ui.router"
            ])
            .config(configurations);
    
    
        function configurations($locationProvider, $routeProvider, $httpProvider) {
    
            $locationProvider.hashPrefix("!");
    
            $routeProvider
                .when("/licensing", {
                    templateUrl: "app/licensing/licensing.html",
                    controller: "LicensingController",
                    controllerAs: "vm"
                })
                .otherwise({
                    redirectTo: "/licensing"
                });
    
        }
    })();
    

    的index.html

    <!-- Angular Libraries -->
    <script src="./node_modules/angular/angular.js"></script>
    <script src="./node_modules/angular-route/angular-route.js"></script>
    <script src="./node_modules/angular-messages/angular-messages.js"></script>
    <script src="./node_modules/@uirouter/angularjs/release/angular-ui-router.js"></script>
    <script src="./scripts/clipboard.js"></script>
    <script src="./libs/angular/angular-clipboard.js"></script>
    <script src="./app/app.module.js"></script>
    
    <!-- Controllers -->
    <script src="./app/authentication/login.controller.js"></script>
    <script src="./app/authentication/forgetpassword.controller.js"></script>
    <script src="./app/licensing/licensing.controller.js"></script>
    

    karma.conf.js

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',
    
    // list of files / patterns to load in the browser
    files: [
      './node_modules/angular/angular.js', // Angular Framework
      './node_modules/@uirouter/angularjs/release/angular-ui-router.js', // UI-Router
      './node_modules/angular-mocks/angular-mocks.js', // Loads the Module for Tests
      './app/licensing/licensing.controller.js', // Licensing Controller
      './app/app.module.js', // Our Angular App
      './app/licensing/licensing.controller.spec.js' // Licensing Controller Spec File
    ],
    

    license.controller.js

    (function () {
    "use strict";
    
        angular
            .module("app")
            .controller("LicensingController", LicensingController)
    
        function LicensingController() {
            // Some code
        }
    
     })();
    

    licensing.controller.spec.js

    describe("Licensing Form", function () {
    
        var LicensingController;
    
        beforeEach(angular.mock.module("app"));
    
        beforeEach(inject(function (_LicensingController_) {
            LicensingController = _LicensingController_;
        }));
    
        it("This is a Dummy Test for (2 + 2)", function () {
            expect(2 + 2).toEqual(4);
        });
    });
    

0 个答案:

没有答案