2016-04-11 67 views
4

我已將我的角度應用部署到firebase。我可以看到在頁面精美的跡象,但我得到以下錯誤,當我重新加載頁面:重新加載頁面時未找到頁面Firebase上的Angular頁面

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

+0

這裏沒有提供解決您的問題的方法。還有其他的東西必須在玩。你可以嘗試 - 在你的部署調試,並確切地看到哪些文件正在上傳和哪些被跳過? – Kato

+0

@Kato我知道我上週問過這個問題,但你對這裏發生的事情有任何其他想法嗎? – Katana24

回答

11

我解決了這一問題 - 這個問題是由火力地堡引起的(事實上,我認爲所有服務器)相信每個角的狀態是應該包含自己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