我已将角度应用程序部署到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应该踩到这里并处理所有路由,但似乎并非如此。
修改
答案 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)
答案 3 :(得分:0)