2016-11-08 44 views
4

我在heroku中有一個angular2應用程序,並且我遇到了路由器的問題。在本地主機中,一切都像魅力,但是當我部署到heroku並嘗試訪問任何不是索引的路由時,我得到了404錯誤,如果我去索引,然後導航低谷頁面路由正常發生,除非我重新加載頁面,然後我得到另一個404,這是我的package.json片使用的英雄 "heroku-prebuild": "npm install http-server -g", "heroku-postbuild": "ng build --target=production --environment=prod && rsync -a dist/* .", "start": "http-server dist/", 我需要設置任何明確重寫將用於我的Procfile?heroku中的Angular2路由

+0

只是一個建議 - 在https://m.alphasights.com/using-using-nginx-on-heroku-to-serve-single-page-apps-and-avoid-cors-5d013b171a45#.1yk8sb720上搜索HTML5路由 –

+0

您還可以將'{provide:LocationStrategy,useClass:HashLocationStrategy}'添加到'AppModule'的提供程序中。另見http://stackoverflow.com/questions/36861628/location-and-hashlocationstrategy-stopped-working-in-beta-16 –

+0

@GünterZöchbauer如果沒有'HashLocationStrategy',唯一的方法就是使用NGINX? –

回答

0

這似乎是從服務器的問題,角知道路由,但你的服務器不知道所有這些路徑。簡單的解決方案是將所有路徑重定向到主index.html。與此類似,

app.get('*', function (req, res) { 
    res.sendfile('./dist/index.html'); // load our index.html file 
}); 

這不會給任何404錯誤,所有的路徑將被重定向到即index.html,然後角路由主路徑將運行相同的,因爲它是在你的本地主機。

+0

我還是遇到了這個問題,我已經申請了,而且它只刷新頁面而不是顯示內部錯誤的根目錄 – MurWade