我是角度2的新手,所以请耐心等待!
我试图将Angular2
和Firebase
放在一起,以便拥有一个实时应用来更新页面上的信息。通过查看Firebase
github for Angular2,他们会说注入Firebase
并为整个应用定义基础url
,如下所示:
import {FIREBASE_PROVIDERS, defaultFirebase} from 'angularfire2';
bootstrap(App, [
FIREBASE_PROVIDERS,
defaultFirebase('https://my.firebaseio.com')
]);
问题是,我也使用bootstrap
上定义的AngularRouter。当我尝试启动这样的应用程序时:
import {ROUTER_PROVIDERS} from 'angular2/router'
import {FIREBASE_PROVIDERS, defaultFirebase} from 'angularfire2'
bootstrap(AppComponent, [ROUTER_PROVIDERS,
FIREBASE_PROVIDERS,
defaultFirebase('https://my.firebaseio.com') //In my code I'm using my own url
]);
我收到此错误:
angular2-polyfills.js:1243 SyntaxError:意外的令牌<(...)
我的结构是这样的:
app.component.ts
boot.ts
--home/home.component.ts
--user/user.component.ts
--post/post.component.ts
firebase
将在用户上使用并发布component
(至少在此测试中)。
我知道,基于Angular doc我们应该在根级别上避免这种类型的声明,因为它将创建每个独立的实例。但在这种情况下,是否有必要在此声明它?
发生了什么,我该如何解决这个问题?
根据要求,这是我的html
文件:
<head>
<base href="/">
<title>Angular 2 Firebase</title>
<link rel="stylesheet" href="assets/stylesheets/bootstrap.min.css" />
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="node_modules/angular2/bundles/router.dev.js"></script>
<script src="node_modules/angular2/bundles/http.dev.js"></script>
<script src="https://cdn.firebase.com/js/client/2.4.1/firebase.js"></script>
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('app/boot').then(null, console.error.bind(console));
</script>
</head>
<body>
<my-app>Loading...</my-app>
</body>
注意:只有在firebase
中插入默认boot.ts
的代码时,才会显示错误。在我这样做之前,应用程序工作正常!
答案 0 :(得分:2)
您需要在SystemJS配置中将 angularfire2 包含在HTML文件中:
System.config({
map: {
firebase: '/node_modules/firebase/lib/firebase-web.js',
angularfire2: ' node_modules/angularfire2'
},
packages: {
angularfire2: {
main: 'angularfire2.js',
defaultExtension: 'js'
},app: {
format: 'register',
defaultExtension: 'js'
}
},
});
能够从此库中注入元素。
您还需要在HTML页面的script
中删除Firebase的head
元素:
<!-- script src="https://cdn.firebase.com/js/client/2.4.1/firebase.js"></script -->
需要使用npm install firebase
安装库,并从SytemJS配置中引用。
请参阅以下HTML页面作为参考: