2015-08-31 21 views
6

Ben ui.router kullanmaya çalışırken bir hata alıyorum:

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>

ben çalışıyorum ui.router kullanın ama başarısız oluyor.

cevap

0

sonra projede dahil unutma https://github.com/angular/bower-angular-route

ui

olmadan açısal yönlendirici yüklemeyi deneyin. senin açısal komut etiketleri html kafasında Çünkü

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

Farklı bir kitaplığa geçmek, özgün sorunun cevabı değildir. – frhd

+0

Yine de, pragmatik bir çözüm olabilir. – Risadinha

+1

Bu olabilir, ancak bu durumda, _why_ için en az bir neden verilmelidir, kütüphane değiştirilmelidir. Bu büyük bir değişiklik ve "ui yönlendiricisini" kullanmaya karşı argümanlar bulmak zor. – frhd

7

, tüm modüller kullanılmadıkları zaman yükleme yapılır değil hafif olasılığı vardır.

1. tüm tarayıcılar için işe yaramayabilir kafasında senaryonuz etiketlerinde bir defer, ekleyin:: Where should I put <script> tags in HTML markup? göre

, buraya iki seçenek var

<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> 

Vücudunuzun altına koyun. Bu, tüm tarayıcılar için çalışacaktır.

... 

    <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

Teşekkür ederim, Ama önce bunu denedim ve işe yaramadı :(, sonra onları kafasına ekledim. – becki

+0

Ne yapmalıyım? –

+2

@James: 'defer' ile ilişkilendirilen bir dış komut çalıştırılıncaya kadar Sayfa yükleme işlemini tamamladı Ayrıca bkz. [HTML Komut Dosyası Öğesi] (https://developer.mozilla.org/de/docs/Web/HTML/Element/script). – frhd

İlgili konular