我正在尝试开发一个以 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/