我是网络开发的新手,我正在尝试制作一个firebase托管角网络应用。我使用angular-cli从Webstorm生成这个项目。
我有一个简单的角度网页应用,可以在加载时显示文字
ng serve
它的工作正常: working result
然而,当我用
加载完全相同的代码时firebase serve
我明白了: not working result
据我所知,firebase的一些问题是我的代码中没有将app.component.ts
中的组件连接到html标记<app-root>
。除此之外,我不知道发生了什么,并花了几天时间试图找出它。
的index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- AngularJS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.min.js"></script>
<!-- AngularFire -->
<script src="https://cdn.firebase.com/libs/angularfire/2.2.0/angularfire.min.js"></script>
</head>
<body>
<app-root>Loading...</app-root>
</body>
<script src="https://www.gstatic.com/firebasejs/3.6.7/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "---",
authDomain: "---",
databaseURL: "---",
storageBucket: "---",
messagingSenderId: "---"
};
firebase.initializeApp(config);
</script>
<script>
const myApp = angular.module("myApp", ['firebase']);
</script>
</html>
app.component.ts
import { Component } from '@angular/core';
import {AngularFire, AuthProviders, AuthMethods, FirebaseListObservable} from 'angularfire2'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
items: FirebaseListObservable<any>;
constructor(public af: AngularFire) {}
}
app.component.html
<h1>
{{title}}
</h1>
main.ts
import './polyfills.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment.prod';
import { AppModule } from './app/app.module';
import { FIREBASE_PROVIDERS, defaultFirebase } from 'angularfire2';
if (environment.production) {
enableProdMode();
}
platformBrowserDynamic().bootstrapModule(AppModule, [
FIREBASE_PROVIDERS,
defaultFirebase('https://<NAME-OF-MY-APP>.firebaseio.com')
]);
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { AngularFireModule } from 'angularfire2';
// Initialize Firebase
export const firebaseConfig = {
apiKey: "---",
authDomain: "---",
databaseURL: "---",
storageBucket: "---",
messagingSenderId: "---"
};
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
AngularFireModule.initializeApp(firebaseConfig)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
答案 0 :(得分:2)
我明白了......
我一直在部署我的src文件夹而不是生成的dist
文件夹。
对于没有意识到需要部署dist
文件夹的人,请运行ng build
来生成它。然后,无论您要部署网站,请上传dist
文件夹。
如果使用firebase进行部署,请将firebase.json "hosting"
标记设置为:
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist"
}
}
然后Firebase将始终部署您的dist文件夹,只需确保每次进行更改时都运行ng build
并希望部署该更改。
如果您正在使用Intellij的WebStorm并且无法找到您的dist文件夹,请在Project
工具窗口中切换到&#34;项目&#34;下拉列表中的选项。