Angularjs使用$inject';行不通

Angularjs使用$inject';行不通,angularjs,Angularjs,我对AngularJs代码进行了巨大的修改以改进它。我在寻找,发现它非常有趣,所以我改变了我的代码,以遵循thos指南 当我到达路由器配置时,我无法使它工作。 如果我像下面的代码一样使用.config,一切正常 angular .module('agApp') .config( ['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $

我对AngularJs代码进行了巨大的修改以改进它。我在寻找,发现它非常有趣,所以我改变了我的代码,以遵循thos指南

当我到达路由器配置时,我无法使它工作。 如果我像下面的代码一样使用
.config
,一切正常

angular
.module('agApp')
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider', 
function ($stateProvider, $urlRouterProvider, $locationProvider) {

    $urlRouterProvider.when("/", "/First");
    $urlRouterProvider.when("", "/First");
    $urlRouterProvider.otherwise("/First");

    $stateProvider
        .state('first', {
            url: "/First",
            views: {
                "main": {
                    templateUrl: "app/component/first.html",
                    controller: 'FirstController',
                    controllerAs: 'vm'
                }
            }
        })
        .state('second', {
            url: "/Second",
            views: {
                "main": {
                    controller: 'SecondController',
                    controllerAs: 'vm',
                    templateUrl: "app/component/second.html"
                }
            }
        })
}]);
但当我尝试使用指南中推荐的代码时,如下所示:

angular
.module('agApp')
.config('ConfigRouter', ConfigRouter);

/* @ngInject */
function ConfigRouter($locationProvider,$stateProvider,$urlRouterProvider) {

    $urlRouterProvider.when("/", "/First");
    $urlRouterProvider.when("", "/First");
    $urlRouterProvider.otherwise("/First");

    $stateProvider
        .state('first', {
            url: "/First",
            views: {
                "main": {
                    templateUrl: "app/component/first.html",
                    controller: 'FirstController',
                    controllerAs: 'vm'
                }
            }
        })
        .state('second', {
            url: "/Second",
            views: {
                "main": {
                    controller: 'SecondController',
                    controllerAs: 'vm',
                    templateUrl: "app/component/second.html"
                }
            }
        })
}
function ConfigRouter(a,b,c){c.when( [.... rest of the code...]  ),ConfigRouter.$inject=["$locationProvider","$stateProvider","$urlRouterProvider"],
然后它停止工作,我不断得到这个错误:

无法实例化模块agApp,原因是:错误:[ng:areq]
参数“fn”不是函数,获取字符串

我会注意正确的注入(至少,我认为我这样做了),因为输出缩小的代码如下所示:

angular
.module('agApp')
.config('ConfigRouter', ConfigRouter);

/* @ngInject */
function ConfigRouter($locationProvider,$stateProvider,$urlRouterProvider) {

    $urlRouterProvider.when("/", "/First");
    $urlRouterProvider.when("", "/First");
    $urlRouterProvider.otherwise("/First");

    $stateProvider
        .state('first', {
            url: "/First",
            views: {
                "main": {
                    templateUrl: "app/component/first.html",
                    controller: 'FirstController',
                    controllerAs: 'vm'
                }
            }
        })
        .state('second', {
            url: "/Second",
            views: {
                "main": {
                    controller: 'SecondController',
                    controllerAs: 'vm',
                    templateUrl: "app/component/second.html"
                }
            }
        })
}
function ConfigRouter(a,b,c){c.when( [.... rest of the code...]  ),ConfigRouter.$inject=["$locationProvider","$stateProvider","$urlRouterProvider"],
在丑陋过程中,我使用的是
ngAnnotate
,顺序如下:
concat
ngAnnotate
,最后是
uglify

我是不是遗漏了什么?我的代码可能会发生什么变化
我是否需要任何额外的文件来启用
$inject


我第一次尝试这样构造我的AngularJ。顺便说一句,控制器的功能不受影响(也因为没有注入,只有一个简单的函数和名称定义),当我可以运行应用程序时,其余的都正常工作,当我尝试使用$inject时问题就开始了。

错误说明了一切:你提供了一个字符串作为参数,而它应该是一个函数。这是因为
config
块没有名称。一定是这样

angular
.module('agApp')
.config(ConfigRouter);

错误说明了一切:您提供了一个字符串作为参数,而它应该是一个函数。这是因为
config
块没有名称。一定是这样

angular
.module('agApp')
.config(ConfigRouter);

好的,我这样做是因为控制器的工作方式,这是我在配置中使用的语法。但我要试试这个。谢谢,我之所以这样做是因为控制器的工作方式,这就是我在配置中使用的语法。但我要试试这个。谢谢