配置注释错误:参数'fn'不是函数,得到字符串

时间:2015-10-27 08:58:13

标签: javascript angularjs dependency-injection

除了一些文件之外,我在各处使用了注释(在控制器,服务......中)。当我遇到缩小问题时,我正在重写最后几个文件。

这是我目前的配置:

(function () {

    angular.module('app')
        .config(function ($stateProvider, $urlRouterProvider, $provide, $httpProvider, showErrorsConfigProvider, LightboxProvider) {
            $httpProvider.interceptors.push('requestsErrorHandler');
            $urlRouterProvider.otherwise('/');
            showErrorsConfigProvider.showSuccess(true);

            // more code
            // routing and stuff...


        });

}());

这很好用。我现在正试图用注释重写这个:

(function () {

    angular.module('app')
        .config('configurationapp', configurationapp);

    configurationapp.$inject = ['$stateProvider', '$urlRouterProvider', '$provide', '$httpProvider', 'showErrorsConfigProvider', 'LightboxProvider'];

    function configurationapp($stateProvider, $urlRouterProvider, $provide, $httpProvider, showErrorsConfigProvider, LightboxProvider) {
            $httpProvider.interceptors.push('requestsErrorHandler');
            $urlRouterProvider.otherwise('/');
            showErrorsConfigProvider.showSuccess(true);


            // more code
            // routing and stuff


        }
}());

但是,我收到了这个错误:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [ng:areq] Argument 'fn' is not a function, got string

我不明白为什么我收到这个错误。我已经完成完全与所有其他文件相同,但这仍然不起作用。

我做错了什么?

2 个答案:

答案 0 :(得分:6)

config提供了一个字符串:

angular.module('app')
    .config('configurationapp', configurationapp);

它需要一个参数,函数或数组。 configurationapp不是Angular服务,不应命名为:

angular.module('app')
    .config(configurationapp);

答案 1 :(得分:1)

试试这个语法。我发现内联注释比显式注入依赖项更容易:

  (function () {

    angular.module('app')
        .config(['$stateProvider', '$urlRouterProvider', '$provide', '$httpProvider', 'showErrorsConfigProvider', 'LightboxProvider',
        function ($stateProvider, $urlRouterProvider, $provide, $httpProvider, showErrorsConfigProvider, LightboxProvider) {
            $httpProvider.interceptors.push('requestsErrorHandler');
            $urlRouterProvider.otherwise('/');
            showErrorsConfigProvider.showSuccess(true);

            // more code
            // routing and stuff...


        }]);

}());