2015-08-31 2 views
6

Я получаю ошибку, пытаясь использовать ui.router:

Uncaught Error: [$injector:modulerr] Failed to instantiate module bApp due to: 
Error: [$injector:unpr] Unknown provider: $stateProvider 
http://errors.angularjs.org/1.4.5/$injector/unpr?p0=%24stateProvider 
at REGEX_STRING_REGEXP (http://localhost:9000/bower_components/angular/angular.js:68:12) 
at http://localhost:9000/bower_components/angular/angular.js:4284:19 
at getService (http://localhost:9000/bower_components/angular/angular.js:4432:39) 
at Object.invoke (http://localhost:9000/bower_components/angular/angular.js:4464:13) 
at runInvokeQueue (http://localhost:9000/bower_components/angular/angular.js:4379:35) 
at http://localhost:9000/bower_components/angular/angular.js:4388:11 
at forEach (http://localhost:9000/bower_components/angular/angular.js:336:20) 
at loadModules (http://localhost:9000/bower_components/angular/angular.js:4369:5) 
at createInjector (http://localhost:9000/bower_components/angular/angular.js:4294:11) 
at doBootstrap (http://localhost:9000/bower_components/angular/angular.js:1655:20) 
http://errors.angularjs.org/1.4.5/$injector/modulerr?p0=bApp&p1=Error%3A%20…F%2Flocalhost%3A9000%2Fbower_components%2Fangular%2Fangular.js%3A1655%3A20) 

angular.module('bApp', ['ui.router']); 
 
angular.module('bApp').config(function($stateProvider, $urlRouterProvider) { 
 
    urlRouterProvider.otherwise('/'); 
 

 
    $stateProvider 
 
     .state('main', { 
 
      url: "/", 
 
      templateUrl: "/views/main.html" 
 
     }) 
 

 
    .state('register', { 
 
     url: "/register", 
 
     templateUrl: "/views/register.html" 
 
     
 
    }); 
 
});
<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title></title> 
 
    <meta name="description" content=""> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <!-- bower:css --> 
 
    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" /> 
 
    <!-- endbower --> 
 
    <!-- endbuild --> 
 
    <!-- build:css(.tmp) styles/main.css --> 
 
    <link rel="stylesheet" href="styles/bootstrap-hero.css"> 
 
    <link rel="stylesheet" href="styles/main.css"> 
 
    <!-- endbuild --> 
 
    <!-- build:js(.) scripts/vendor.js --> 
 
    
 
    <script src="bower_components/jquery/dist/jquery.js"></script> 
 
    <script src="bower_components/angular/angular.js"></script> 
 
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> 
 
    <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> 
 

 
    <!-- endbuild --> 
 

 

 
</head> 
 

 
<body ng-app="bApp"> 
 

 
    <!--[if lte IE 8]> 
 
     <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> 
 
    <![endif]--> 
 

 
    <!-- Add your site or application content here --> 
 
    <div class="header"> 
 
     <div class="navbar navbar-default" role="navigation"> 
 
      <div class="container"> 
 
       <div class="navbar-header"> 
 

 
        <a class="navbar-brand" href="#/">b</a> 
 
       </div> 
 
       <ul class="nav navbar-nav"> 
 
        <li><a ui-sref="main">Home</a></li> 
 
        <li><a ui-sref="register">Register</a></li> 
 
       </ul> 
 
      </div> 
 
     </div> 
 
    </div> 
 

 

 
    <div ui-view></div> 
 

 

 
    <!-- build:js({.tmp,app}) scripts/scripts.js --> 
 
    
 
    <script src="scripts/app.js"></script> 
 
    <script src="scripts/controllers/main.js"></script> 
 
    <script src="scripts/controllers/register.js"></script> 
 
    <script src="scripts/app.config.js"></script> 
 
    <!-- endbuild --> 
 
    </div> 
 
</body> 
 
</html>

Я пытаюсь используйте ui.router, но он не работает.

ответ

0

пытаются установить угловую маршрутизатор без пользовательского интерфейса

https://github.com/angular/bower-angular-route

не забывайте включить его в проект, то.

<script src="/js/bower_components/angular-route/angular-route.js"></script> 
+6

Переключение в другую библиотеку не является ответом на оригинальную проблему. – frhd

+0

Это может быть прагматичное решение. – Risadinha

+1

Это может быть, но в этом случае должна быть указана хотя бы одна причина: _why_ библиотека должна быть заменена. Это серьезное изменение, и я полагаю, что трудно использовать аргументы против использования 'ui-router'. – frhd

7

Поскольку ваши угловые теги сценария в HTML-головке, есть небольшая вероятность, что не все модули загрузится, когда они используются.

Согласно Where should I put <script> tags in HTML markup?, у вас есть два варианта здесь:

1. Добавьте defer в тегах сценария в голове, которая не может работать для всех браузеров:

<script src="bower_components/jquery/dist/jquery.js" defer></script> 
<script src="bower_components/angular/angular.js" defer></script> 
<script src="bower_components/bootstrap/dist/js/bootstrap.js" defer></script> 
<script src="bower_components/angular-ui-router/release/angular-ui-router.js" defer></script> 

Поместите их в нижнюю часть вашего тела. Это будет работать для всех браузеров.

... 

    <script src="bower_components/jquery/dist/jquery.js" defer></script> 
    <script src="bower_components/angular/angular.js" defer></script> 
    <script src="bower_components/bootstrap/dist/js/bootstrap.js" defer></script> 
    <script src="bower_components/angular-ui-router/release/angular-ui-router.js" defer></script> 

    <!-- build:js({.tmp,app}) scripts/scripts.js --> 

    <script src="scripts/app.js"></script> 
    <script src="scripts/controllers/main.js"></script> 
    <script src="scripts/controllers/register.js"></script> 
    <script src="scripts/app.config.js"></script> 
    <!-- endbuild --> 
    </div> 
</body> 
+0

Спасибо, но я пробовал это первым и не работал :(, затем я добавил их в голову. – becki

+0

Что делает * defer * do? –

+2

@James: Внешний скрипт, связанный с 'defer', не будет выполнен до тех пор, пока страница завершила загрузку. См. также [Элемент HTML-скрипта] (https://developer.mozilla.org/de/docs/Web/HTML/Element/script). – frhd

Смежные вопросы