在Firebase上重新加载Angular页面时找不到页面

时间:2016-04-11 17:02:37

标签: angularjs firebase

我已将角度应用程序部署到firebase。我可以看到登录页面很好,但是当我重新加载页面时出现以下错误:

This file does not exist and there was no index.html found in the current directory or 404.html in the root directory.

Why am I seeing this?

You may have deployed the wrong directory for your application. Check your firebase.json and make sure the public directory is pointing to a directory that contains an index.html file.
You can also add a 404.html in the root of your site to replace this page with a custom error page.

因为错误建议我检查了我的firebase.json文件并显示了这个:

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

在这里,您可以看到我的public文件夹是我的dist文件夹。这个dist文件夹实际上是我放置所有文件(css,js,html和index.html)的地方,当gulp构建它时。文件夹结构如下所示:

dist
  css
  images
  js
  templates
  index.html

所以上面的目标文件夹确实有一个index.html页面 - 为什么我会收到此错误? Angular应该踩到这里并处理所有路由,但似乎并非如此。

修改

enter image description here

4 个答案:

答案 0 :(得分:22)

我解决了这个问题 - 这个问题是由Firebase(我认为所有服务器)引起的,它认为每个Angular状态都是一个应该包含自己的index.html文件的文件夹 - 显然情况并非如此。

需要注意的是它只能引用文件夹根目录中的index.html。为此,您需要将firebase.json文件修改为以下内容:

{
  "firebase": "app-name",
  "public": "dist",
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ],
  "rewrites": [{
    "source": "/public/**",
    "destination": "/public.html"
  },
  {
    "source": "**",
    "destination": "/index.html"
  }]
}

这里的重要部分是重写和源对象。有关详细信息,请参阅firebase.json说明页面:firebase.json

答案 1 :(得分:3)

2018年,遇到了同样的问题。 Katana24提供了一个很好的答案,但是从那时起,firebase有了一些更新。这是Katana24答案更新:

firebase.json:

{
"functions": {
    "predeploy": [
        "npm --prefix \"%RESOURCE_DIR%\" run lint"
    ],
    "source": "functions"
},
"hosting": {
    "public": "dist/YOURAPPNAME",
    "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
    ],
    "rewrites": [{
            "source": "/public/**",
            "destination": "/public.html"
        },
        {
            "source": "**",
            "destination": "/index.html"
        }
    ],
    "storage": {
        "rules": "storage.rules"
    }
}
}

答案 2 :(得分:0)

如果您使用firebase-tools,则可以在以下问题上打 y (是):

配置为单页应用程序(将所有网址重写为/index.html)?

enter image description here

答案 3 :(得分:0)


在“ firebase.json”的“托管”部分中,添加“重写”
color_table = pd.crosstab(
    index=data_frame['bin Year'],
    columns=data_frame['Divide Year 1976'],
    dropna=False)

enter image description here