Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度+;RequireJS应用程序出现错误;主控制器不是一个功能“;_Javascript_Angularjs_Requirejs - Fatal编程技术网

Javascript 角度+;RequireJS应用程序出现错误;主控制器不是一个功能“;

Javascript 角度+;RequireJS应用程序出现错误;主控制器不是一个功能“;,javascript,angularjs,requirejs,Javascript,Angularjs,Requirejs,好吧,情况就是这样。我试图从头开始构建一个AngularJS应用程序,并将其与RequireJS相结合。这就是一切都要走下坡路的地方 发生的情况是,我得到一个错误,说mainController不是一个未定义的函数。但是有一段时间,就在一秒钟内,我可以在浏览器的控制台中看到一条消息,告诉我一些来自控制器的信息,就在错误显示之前 这怎么可能 就像我说的,我在一个未知的领域,我不知道去哪里找,所以我要给你们我所有的文件^^ 振作起来代码就要来了 文件树 app/modules/main.js

好吧,情况就是这样。我试图从头开始构建一个
AngularJS
应用程序,并将其与
RequireJS
相结合。这就是一切都要走下坡路的地方

发生的情况是,我得到一个错误,说
mainController不是一个未定义的函数
。但是有一段时间,就在一秒钟内,我可以在浏览器的
控制台中看到一条消息,告诉我一些来自控制器的信息,就在错误显示之前

这怎么可能


就像我说的,我在一个未知的领域,我不知道去哪里找,所以我要给你们我所有的文件^^

振作起来代码就要来了

文件树


app/modules/main.js

require.config({
    paths: {
        //  Load dependencies
        'angular': '../lib/Angular-1.4.7/angular.min',
        'angular-route': '../lib/Angular-1.4.7/angular-route.min',

        //  Load modules
        'app': '../app/modules/core/app'
    },
    shim: {
        'angular-route': {
            deps: ['angular']
        },
        'app': {
            deps: ['angular-route']
        }
    }
});

require(['app'], function () {
    //  The application has been loaded
});

app/modules/core/app.js

define(function () {
    var app = angular.module('app', ['ngRoute']);

    app.config(['$routeProvider', function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'app/modules/core/views/home.html',
                controller: 'homeController'
            })
            .when('/home', {
                templateUrl: 'app/modules/core/views/home.html',
                controller: 'homeController'
            });
    }]);

    require(['../app/modules/core/controllerReferences'], function (references) {
        require(references, function () { 
            angular.bootstrap(document, ['app']);
        });
    })
});

app/modules/core/controllerReferences.js

define(function () {
    return [
        'modules/core/controllers/mainController',
        'modules/core/controllers/homeController'
    ];
});

app/modules/core/controllers/mainController.js

define(function () {
    var app = angular.module('app', []);

    app.controller('mainController', ['$scope', function ($scope) {
        console.log('mainController at your service');
    }]);
});

编辑

我收到的错误

Error: [ng:areq] http://errors.angularjs.org/1.4.7/ng/areq?p0=mainController&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at http://localhost:3644/lib/Angular-1.4.7/angular.min.js:6:416
    at qb (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:22:131)
    at Sa (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:22:218)
    at http://localhost:3644/lib/Angular-1.4.7/angular.min.js:80:81
    at O (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:59:501)
    at K (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:60:338)
    at g (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:54:410)
    at g (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:54:433)
    at g (http://localhost:3644/lib/Angular-1.4.7/angular.min.js:54:433)    
(anonymous function) @ angular.min.js:107
(anonymous function) @ angular.min.js:80
n.$apply @ angular.min.js:133
(anonymous function) @ angular.min.js:20
e @ angular.min.js:39
d @ angular.min.js:19
zc @ angular.min.js:20
(anonymous function) @ app.js:18
context.execCb @ require.js:1678
Module.check @ require.js:878
(anonymous function) @ require.js:1128
(anonymous function) @ require.js:131
(anonymous function) @ require.js:1178
each @ require.js:56
Module.emit @ require.js:1177
Module.check @ require.js:929
Module.enable @ require.js:1165
Module.init @ require.js:783
callGetModule @ require.js:1192
context.completeLoad @ require.js:1571
context.onScriptLoad @ require.js:1699

您的错误在控制器定义中

var-app=angular.module('app',[])创建新模块
var-app=angular.module('app')检索现有模块

因此,您的
mainController.js
应该如下所示:

define(function () {
    var app = angular.module('app');

    app.controller('mainController', ['$scope', function ($scope) {
        console.log('mainController at your service');
    }]);
});
基本上,你所做的是创建你的
应用程序
模块三次-一次在开始,两次以上当你包括你的控制器


有关更多信息,请参阅

嗯,你能提供更多关于错误的信息吗?通常,如果抛出错误,您将获得文件、行号和堆栈跟踪。我当然可以,只需更新问题^^^^即可。最初我以为您(在HTML中)有一个对未定义控制器的引用,但很明显,如果名称匹配并且您在控制台中有输出,那么这就没有意义了。这是一个有趣的问题:)