错误:未知提供商

时间:2014-02-11 19:03:15

标签: angularjs

我开始使用Angular,现在我遇到了以下问题......

当我加载登录页面时,在firebug控制台中我得到:

Error: Unknown provider: loggerProvider <- logger.....

如果有人能看到这个非常小的项目angular-seed-master.zip,可以从here下载。

它包含基本的登录,注销,注册功能。

不知何故,在login.js RootCtrl函数中,我不允许将logger作为参数传递。我不知道为什么。

非常感谢, Danijela

段:

login.js控制器的和平:

function LoginCtrl($scope, $rootScope, $http, logger, messagesService) {    
}

function RootCtrl ($scope, $http, logger, $location) {
...
}

function UnsecureCtrl ($scope) {
...
}

index.html的和平:

...
<body>
    <div ng-controller="RootCtrl">
    <header>
        <div class="user-panel">
            <div ng-switch on="isLoggedIn">
                <div class="user" ng-cloak ng-switch-when="true">Hello {{email}}!</div>
                <div class="loginout">
                    <button class="btn" ng-cloak ng-switch-when="false" ng-click="loginRoute()">Login</button>              
                    <button class="btn" ng-cloak ng-switch-when="true" ng-click="logout()">Logout</button>
                </div>
            </div>
        </div>
    </header>
    <div class="container-fluid" ng-view ng-animate="{enter: 'view-enter'}"></div>
    <footer>
    </footer>
    </div>
</body>
...

和main.js:

'use strict';

require.config({
    baseUrl:'js',
    paths:{
        jquery: '../lib/jquery/jquery-1.8.2.min',
        angular: '../lib/angular/angular.min',
        toastr: '../lib/toastr.min',
        logger: 'components/logger',
        loginctrl: 'controllers/login',
        securectrl: 'controllers/secure',
        messagesService: 'services/messagesService',
        ngLoginSubmit: 'directives/ngLoginSubmit'
    },
    shim:{
        'angular':{
            exports:'angular'
        },
        'jquery': {
            exports: '$'
        },
        'toastr': {
            deps:['jquery'],
            exports: "toastr"
        },
        'routes': {
            deps:['loginctrl','securectrl']
        },
        'logger': {
            deps:['jquery','angular','toastr']
        },
        'ngLoginSubmit': {
            deps:['angular']
        }
    },
    priority:[
        'angular'
    ]
});

require([
    'angular',
    'jquery',
    'loginctrl',
    'securectrl',    
    'app',
    'toastr',
    'logger',
    'routes',
    'messagesService',
    'ngLoginSubmit'
], function (angular) {
    //After all dependencies are loaded, bootstrap application
    $(document).ready(function () {
        angular.bootstrap(document, ['tableplanner']);
    });
});

和logger.js:

'use strict';
define(['app', 'toastr'], function (app, toastr) {

    app.factory('logger', function () { 
    ...

2 个答案:

答案 0 :(得分:1)

您需要验证记录器是否已正确注入。添加一个片段来帮助您,它比链接整个项目更好。

答案 1 :(得分:1)

我已从html标记中删除了ng-app属性,此问题已解决。