javascript - AngularJS:未捕获错误:[$injector:modulerr] 与 firebase

标签 javascript angularjs firebase angularfire

我正在尝试开发一个以 Firebase 作为后端的 Angularjs 应用程序。 我按照此 [Example][1] 中的步骤进行操作,但我不断得到 这个错误:

        instantiate module tipntripApp due to:
    Error: [$injector:modulerr] Failed to instantiate module firebase due to:
    Error: [$injector:nomod] Module 'firebase' 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.

它似乎无法找到 Firebase 服务。 这是 html 和 js 文件:index.html,app.js

// create our angular app and inject ngAnimate and ui-router 
// =============================================================================
'use strict';
angular.module('tipntripApp', ['ui.router', 'checklist-model', 'firebase'])

.config(['$stateProvider', '$urlRouterProvider',
  function($stateProvider, $urlRouterProvider) {

    $stateProvider

    // route to show our basic find (/find)
      .state('app', {
      url: '/app',
      controller: 'findController',
      views: {
        'header': {
          templateUrl: 'views/header.html',
        },
        'content': {
          templateUrl: 'views/find.html',
          controller: 'SearchController'
        },
        'footer': {
          templateUrl: 'views/footer.html',
        }
      }
    })



    // nested states 
    // each of these sections will have their own view
    // url will be nested (/find/step1)
    .state('app.step1', {
      url: '/step1',
      templateUrl: 'views/find_step1.html'
    })

    // url will be /find/step2
    .state('app.step2', {
      url: '/step2',
      templateUrl: 'views/find_step2.html'
    })

    // url will be /find/step3
    .state('app.step3', {
      url: '/step3',
      templateUrl: 'views/find_step3.html'
    })

    .state('app.step4', {
      url: '/step4',
      templateUrl: 'views/find_step4.html'
    })

    .state('app.summary', {
      url: '/summary',
      templateUrl: 'views/find_summary.html'
    })

    .state('app.results', {
      url: '/results',
      templateUrl: 'views/find_results.html'
    })

    .state('login', {
      url: '/login',
      views: {
        'header': {
          templateUrl: 'views/header.html',
        },
        'content': {
          templateUrl: 'views/login.html',
          controller: 'LoginController'
        },
        'footer': {
          templateUrl: 'views/footer.html',
        }
      }
    })

    .state('signin', {
      url: '/signin',
      views: {
        'header': {
          templateUrl: 'views/header.html',
        },
        'content': {
          templateUrl: 'views/sigin.html',
          controller: 'LoginController'
        },
        'footer': {
          templateUrl: 'views/footer.html',
        }
      }
    });

    // catch all route
    // send users to the find page 
    $urlRouterProvider.otherwise('/app/step1');
  }
]);
<!DOCTYPE html>
<html lang="en" ng-app="tipntripApp">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- The above 3 meta tags *must* come first in the head; any other head 
         content must come *after* the<!--se tags -->

  <title>Tip&Trip</title>
  <!-- Bootstrap -->
  <!-- build:css styles/main.css -->
  <link href="../bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
  <link href="../bower_components/bootstrap/dist/css/bootstrap-theme.min.css" rel="stylesheet">
  <link href="../bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet">
  <link href="styles/bootstrap-social.css" rel="stylesheet">
  <link href="styles/mystyles.css" rel="stylesheet">


  <!-- endbuild -->


  <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>

<body>
  <div ui-view="header"></div>
  <div ui-view="content"></div>
  <div ui-view="footer"></div>

  <!-- build:js scripts/main.js -->
  <script src="../bower_components/angular/angular.min.js"></script>
  <script src="../bower_components/angular-resource/angular-resource.min.js"></script>
  <script src="../bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>

  <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap.js"></script>
  <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.js"></script>
  <script src="../node_modules/checklist-model/checklist-model.js"></script>

  <!-- Firebase -->
  <script src="https://cdn.firebase.com/js/client/2.2.4/firebase.js"></script>

  <script src="scripts/app.js"></script>
  <script src="scripts/controllers.js"></script>
  <script src="scripts/geoservices.js"></script>
  <script src="scripts/interestsServices.js"></script>

  <!-- AngularFire -->
  <script src="https://cdn.firebase.com/libs/angularfire/1.1.3/angularfire.min.js"></script>

  <!-- Firebase simple login -->
  <script src="https://cdn.firebase.com/js/simple-login/1.6.2/firebase-simple-login.js"></script>
  <!-- endbuild -->

</body>

</html>

谢谢。

最佳答案

你需要重新排序你的脚本,依赖在 Angular 之前:

  <!-- AngularFire -->
  <script src="https://cdn.firebase.com/libs/angularfire/1.1.3/angularfire.min.js"></script>
    <!-- Firebase -->
  <script src="https://cdn.firebase.com/js/client/2.2.4/firebase.js"></script>

  <!-- build:js scripts/main.js -->
  <script src="../bower_components/angular/angular.min.js"></script>
  <script src="../bower_components/angular-resource/angular-resource.min.js"></script>
  <script src="../bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>

  <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap.js"></script>
  <script src="../node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.js"></script>
  <script src="../node_modules/checklist-model/checklist-model.js"></script>

  <script src="scripts/app.js"></script>
  <script src="scripts/controllers.js"></script>
  <script src="scripts/geoservices.js"></script>
  <script src="scripts/interestsServices.js"></script>
  <!-- endbuild -->

此外,您不需要 FirebaseSimpleLogin,它是旧版本的 Firebase 登录。从 Firebase 2.0 开始,登录被捆绑在 firebase.js 中。

关于javascript - AngularJS:未捕获错误:[$injector:modulerr] 与 firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34544769/

相关文章:

javascript - jQuery AJAX 异步 : False not behaving as expected

javascript - 警告 : connect. session() MemoryStore 不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程

javascript - html/javascript : is there any way to make an <img> tag w/o needing an actual image?

javascript - ng-click 在 Ionic 应用程序中的项目内部不起作用

android - 无法从包外部访问电话验证卡

javascript - lunr.js 的希腊语支持

javascript - 使用 $location 导航并传递隐藏参数

Chrome Inspector 中的 Javascript 调试 : variables are shown undefined in watches and console but can be inspected when hovered

swift - 收听添加到 firestore 集合中的任何新文档

javascript - Firebase 分析未显示 Web 应用程序的数据