typescript 当我刷新我的网站时,我得到一个404,这是Angular2和Firebase

sg3maiej  于 2023-11-20  发布在  TypeScript
关注(0)|答案(4)|浏览(103)

当我刷新我的网站时,我得到一个404。这是使用Angular2,typescript和firebase。

我已经用我的Angular2应用程序部署到FirebaseApp。
路由似乎改变罚款,但当我刷新浏览器它重定向到404页。
当我在本地刷新时,这不会发生。
我是否缺少任何路由设置或Firebase设置?

我的firebase.json文件:

{
   "firebase": "test",
   "public": "src",
   "ignore": [
     "firebase.json",
     "**/.*",
     "**/node_modules/**"
   ]
 }

字符串

ruoxqz4g

ruoxqz4g1#

对于Firebase Hosting,有关重定向和重写的文档在这里:https://www.firebase.com/docs/hosting/guide/url-redirects-rewrites.html
从那里:
当你想为多个URL显示相同的内容时,使用重写。重写在模式匹配中特别有用,因为你可以接受任何匹配模式的URL,让客户端代码决定显示什么。
您可能正在寻找该页面上的第一个重写示例:

"rewrites": [ {
  "source": "**",
  "destination": "/index.html"
} ]

字符串
这是一个指令,让Web服务器为任何传入的请求提供/index.html服务,无论路径是什么。

6pp0gazn

6pp0gazn2#

在已接受的答案的基础上,我想说明重写规则在托管规则的 * 内部 *。

"hosting": {
  "rewrites": [ {
    "source": "**",
    "destination": "/index.html"
   } ]
}

字符串
Firebase也有一个更新的文档页面,上面的例子就是从那里来的。
另外,我被hash(#)问题弄糊涂了。我发现这并不适用于新的Angular。在firebase.json中做这些小的更改,重建,发布到firebase,然后用clear-cache刷新页面,立即解决了我的404问题,不需要解决URL中的hash问题。

kadbb459

kadbb4593#

我认为你使用了Angular2路由的默认模式(即HTML5LocationStrategy)。在这种情况下,你需要在你的web服务器上进行一些配置,以便为每个路由对应的每个URL加载index.html(你的入口点文件)。
如果你想切换到HashBang方法,你需要使用这个配置:

import {bootstrap} from 'angular2/platform/browser';
import {provide} from 'angular2/core';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {LocationStrategy, Location, HashLocationStrategy } from 'angular2/router'; 

import {MyApp} from './myapp';

bootstrap(MyApp, [
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass: HashLocationStrategy}
]);

字符串
在这种情况下,当您刷新页面时,它将再次显示。
希望对你有帮助,蒂埃里

ecfsfe2w

ecfsfe2w4#

我在生产中遇到了同样的问题。以下步骤帮助我解决了这个问题。接下来你必须添加你的根模块:

imports: [RouterModule.forRoot(routes, {useHash: true})]

字符串
然后它将切换到HashLocationStrategy。Angular文档
希望能对大家有所帮助!

相关问题