Я врезался в стену AngularJS

Я пытаюсь забрать AngularJS обратно. Я создал сайт с предыдущей версией AngularJS и RequireJS, и у меня никогда не было этой проблемы, я искал и искал, и все еще не могу заставить это работать, поэтому я обращаюсь. Я пытаюсь использовать RequireJS 2.1.15 и AngularJS 1.3.11. При попытке загрузить мою главную страницу я получаю следующее:

Uncaught Error: [$injector:modulerr] Failed to instantiate module rehyveApp due to:
Error: [$injector:modulerr] Failed to instantiate module ngRoute due to:
Error: [$injector:nomod] Module 'ngRoute' 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.
http://errors.angularjs.org/1.3.11/$injector/nomod?p0=ngRoute
at http://127.0.0.1:64216/js/lib/angular.js:63:12
at http://127.0.0.1:64216/js/lib/angular.js:1764:17
at ensure (http://127.0.0.1:64216/js/lib/angular.js:1688:38)
at module (http://127.0.0.1:64216/js/lib/angular.js:1762:14)
at http://127.0.0.1:64216/js/lib/angular.js:4094:22
at forEach (http://127.0.0.1:64216/js/lib/angular.js:323:20)
at loadModules (http://127.0.0.1:64216/js/lib/angular.js:4078:5)
at http://127.0.0.1:64216/js/lib/angular.js:4095:40
at forEach (http://127.0.0.1:64216/js/lib/angular.js:323:20)
at loadModules (http://127.0.0.1:64216/js/lib/angular.js:4078:5)
http://errors.angularjs.org/1.3.11/$injector/modulerr?p0=ngRoute&p1=Error%3…dules%20(http%3A%2F%2F127.0.0.1%3A64216%2Fjs%2Flib%2Fangular.js%3A4078%3A5)
at http://127.0.0.1:64216/js/lib/angular.js:63:12
at http://127.0.0.1:64216/js/lib/angular.js:4117:15
at forEach (http://127.0.0.1:64216/js/lib/angular.js:323:20)
at loadModules (http://127.0.0.1:64216/js/lib/angular.js:4078:5)
at http://127.0.0.1:64216/js/lib/angular.js:4095:40
at forEach (http://127.0.0.1:64216/js/lib/angular.js:323:20)
at loadModules (http://127.0.0.1:64216/js/lib/angular.js:4078:5)
at createInjector (http://127.0.0.1:64216/js/lib/angular.js:4004:11)
at doBootstrap (http://127.0.0.1:64216/js/lib/angular.js:1446:20)
at Object.bootstrap (http://127.0.0.1:64216/js/lib/angular.js:1467:12)
http://errors.angularjs.org/1.3.11/$injector/modulerr?p0=rehyveApp&p1=Error…trap%20(http%3A%2F%2F127.0.0.1%3A64216%2Fjs%2Flib%2Fangular.js%3A1467%3A12)

Вот мой index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <title></title>

    <link rel="stylesheet" href="css/bootstrap.css">
    <link rel="stylesheet" href="css/bootstrap-theme.css">
</head>

<body>
    <div class="container">
        <a href="#/main">Load Main View</a>
    </div>

    <div class="container">
        <ng-view></ng-view>
    </div>

    <script src="js/require.js" data-main="js/main.js"></script>
</body>
</html>

Вот мой main.js:

require.config({
paths: {
    base: "/js",
    lib: "/js/lib"
},
shim: {
    'lib/bootstrap': {
        deps: ['lib/jquery']
    },
    'lib/angular': {
        deps: ['lib/jquery']
    },
    'lib/angular-route': {
        deps: ['lib/angular']
    },
    'lib/angular-resource': {
        deps: ['lib/angular']
    },
    'lib/ui-bootstrap': {
        deps: ['lib/angular']
    },
    'base/app': {
        deps: ['lib/angular', 'lib/angular-route']
    },
    'base/controllers/mainController': {
        deps: ['base/app']
    }
  }
});

define(['lib/jquery', 'lib/angular', 'lib/angular-route', 'lib/angular-resource', 'lib/ui-bootstrap', 'base/app', 'base/controllers/mainController'], function () {
angular.element(document).ready(function() {
     angular.module('rehyveApp', ['ngRoute']);
     angular.bootstrap(document, ['rehyveApp']);
   });
});

Вот мой app.js:

'use strict';

define(['lib/angular'], function () {
var rehyveApp = angular.module('rehyveApp', ['ngRoute'])
    .config(function ($routeProvider) {

        $routeProvider.when('/main',
            {
                templateUrl: 'templates/main.html',
                controller: 'mainController'
            });

        $routeProvider.otherwise({redirectTo: 'main'});


    });
return rehyveApp;
});

и мой mainController.js:

"использовать строгое";

define(['base/app'], function (rehyveApp) {
var rehyveApp = angular.module('rehyveApp',[]);
rehyveApp.controller('mainController', ['$scope', function ($scope) {

    $scope.testdata = {
        name: 'mainController working'
    }
}]);
});

Любая помощь будет принята с благодарностью. Заранее спасибо.

2 ответа

Таким образом, оказывается, что это была проблема с версией 1.3.11 библиотеки angular-route.js, они только что выпустили 1.3.12, и после ее копирования все работает. Спасибо всем за внимание.

Ты забыл 'lib/angular-route' в вашем define в app.js, Смотрите, что вы используете ngRoute но не импортировать его.

define(['lib/angular','lib/angular-route'], function () {
Другие вопросы по тегам