2016-11-08 3 views
4

У меня есть приложение angular2 в heroku, и у меня проблемы с маршрутизатором. В локальном хосте все работает как шарм, но когда я развертываю герою и пытаюсь получить доступ по любому маршруту, который не является индексом, я получил ошибку 404, если я иду по индексу, а затем перейдите на страницу прохода, маршрутизация происходит нормально, если я не перезагружу страницу, то я получаю еще 404, вот кусок моего пакета.json, используемый heroku "heroku-prebuild": "npm install http-server -g", "heroku-postbuild": "ng build --target=production --environment=prod && rsync -a dist/* .", "start": "http-server dist/", Нужно ли мне настроить какую-либо экспресс-переписку, которая будет использоваться в моем Procfile?Angular2 routing in heroku

+0

Просто предложение - поиск маршрутизации HTML5 в https://m.alphasights.com/using-nginx-on-heroku-to-serve-single-page-apps-and-avoid-cors-5d013b171a45#.1yk8sb720 –

+0

Вы также можете добавить '{предоставить: 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

У меня все еще есть проблема. Я применил это уже. И это только обновленная страница на странице, которая не является root, которая показывает внутреннюю ошибку – MurWade