angular-cli Firebase 托管 Angular 2 路由器不工作
angular-cli Firebase hosting Angular 2 router not working
我正在尝试使用 Firebase 托管一个 angular 2 应用程序(使用 angular cli 创建),但我的路由不起作用。
我使用 angular 2 和打字稿为我正在工作的网站创建了一个项目,我想要一个静态隐私政策页面。
当我表演时
ng serve
并在我的浏览器中导航到 http://localhost:4200/privacy-policy 我得到了我期望的内容。
这里是angular2路由页面推荐的代码-
@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 serve 那样工作。
如有任何帮助,我们将不胜感激。
在您的 app.module.ts
文件中添加以下内容:
声明
import { LocationStrategy, HashLocationStrategy} from '@angular/common';
并在提供商中添加以下内容
@NgModule({
declarations: [...],
imports:[...],
providers:[..,{ provide: LocationStrategy, useClass: HashLocationStrategy },..]
...,
})
希望这能解决您的问题。
如果可能,请将您的路线保存在单独的文件中。
干杯
回复晚了,但由于我今天在 Firebase 上部署我的应用程序时遇到了同样的问题,这里是它的快速修复:
在您的 firebase.json 文件中,通过定义 rewrite 规则更新您的托管密钥:
"hosting": {
"public": "dist",
"rewrites": [ {
"source": "**",
"destination": "/index.html"
} ]
}
打开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/**"
]
}
}
我在 Angular 8,这对我有用
ng 构建 --prod
火力基地部署
我的 firebase.json 文件也如下所示:
{
"hosting": {
"public": "dist/crm",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
在dist/crm中,crm 是项目文件夹的名称。我希望它有所帮助。
我正在尝试使用 Firebase 托管一个 angular 2 应用程序(使用 angular cli 创建),但我的路由不起作用。
我使用 angular 2 和打字稿为我正在工作的网站创建了一个项目,我想要一个静态隐私政策页面。
当我表演时
ng serve
并在我的浏览器中导航到 http://localhost:4200/privacy-policy 我得到了我期望的内容。
这里是angular2路由页面推荐的代码-
@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 serve 那样工作。
如有任何帮助,我们将不胜感激。
在您的 app.module.ts
文件中添加以下内容:
声明
import { LocationStrategy, HashLocationStrategy} from '@angular/common';
并在提供商中添加以下内容
@NgModule({
declarations: [...],
imports:[...],
providers:[..,{ provide: LocationStrategy, useClass: HashLocationStrategy },..]
...,
})
希望这能解决您的问题。
如果可能,请将您的路线保存在单独的文件中。
干杯
回复晚了,但由于我今天在 Firebase 上部署我的应用程序时遇到了同样的问题,这里是它的快速修复:
在您的 firebase.json 文件中,通过定义 rewrite 规则更新您的托管密钥:
"hosting": { "public": "dist", "rewrites": [ { "source": "**", "destination": "/index.html" } ] }
打开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/**"
]
}
}
我在 Angular 8,这对我有用
ng 构建 --prod 火力基地部署
我的 firebase.json 文件也如下所示:
{
"hosting": {
"public": "dist/crm",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}
在dist/crm中,crm 是项目文件夹的名称。我希望它有所帮助。