我正在尝试使用Firebase托管一个角度2应用程序(使用angular cli创建),但我的路线无效。
我为我正在处理的网站创建了一个带有角度2和打字稿的项目,我想要一个静态隐私策略页面。
当我表演时
ng serve
然后在我的浏览器中导航到http://localhost:4200/privacy-policy我会得到我期望的内容。
以下是角度2路线页面建议的代码 -
@NgModule({
declarations: [
AppComponent,
HomeComponent,
TermsOfServiceComponent,
PrivacyPolicyComponent,
PageNotFoundComponent
],
imports: [
AlertModule,
BrowserModule,
FormsModule,
HttpModule,
RouterModule.forRoot([
{path: 'privacy-policy', component: PrivacyPolicyComponent},
{path: 'terms-of-service', component: TermsOfServiceComponent},
{path: '', component: HomeComponent},
{path: '**', component: PageNotFoundComponent}
])
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {
}
我在我的项目中配置了Firebase托管,这是我的配置文件 -
{
"database": {
"rules": "database.rules.json"
},
"hosting": {
"public": "dist"
}
}
部署我运行
ng build --prod
firebase deploy
当我导航到 https://MY-APP.firebaseapp.com/ 该应用程序可以加载默认路由。
然而,当我尝试导航到 https://MY-APP.firebaseapp.com/privacy-policy 我得到404。
我希望这可以像使用ng服务一样工作。
非常感谢任何帮助。
答案 0 :(得分:31)
迟到的回复,但是因为我今天遇到了同样的问题,当我在Firebase上部署我的应用时,这里是快速修复它:
在 firebase.json 文件中,通过定义重写规则来更新您的主机密钥:
"hosting": { "public": "dist", "rewrites": [ { "source": "**", "destination": "/index.html" } ] }
答案 1 :(得分:12)
在app.module.ts
文件中添加以下内容:
声明
import { LocationStrategy, HashLocationStrategy} from '@angular/common';
并在提供商中添加以下内容
@NgModule({
declarations: [...],
imports:[...],
providers:[..,{ provide: LocationStrategy, useClass: HashLocationStrategy },..]
...,
})
希望这能解决您的问题。
如果可能,请将您的路线保存在单独的文件中。
干杯
答案 2 :(得分:0)
打开firebase.json
如果您有这个:
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
删除** /。*行
所以你有这个:
"ignore": [
"firebase.json",
"**/node_modules/**"
]
将此留给我工作了:
{
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"hosting": {
"public": "dist",
"rewrites": [ {
"source": "**",
"destination": "/index.html"
} ],
"ignore": [
"firebase.json",
"**/node_modules/**"
]
}
}
答案 3 :(得分:0)
我使用的是Angular 8,这对我有用
ng build --prod Firebase部署
我的firebase.json文件也如下所示:
{
"hosting": {
"public": "dist/crm",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
在dist / crm中,crm是项目文件夹的名称。希望对您有所帮助。