03.09.2018, 16:11
|
Новичок на форуме
|
|
Регистрация: 27.05.2017
Сообщений: 9
|
|
Angular 1.6 + NodeJS + Webpack, Использование html5Mode
У меня есть singlepage application на Angular 1.6.
Frontend - port 8000
Backend - port 3000
Я засетапил html5Mode и все впринципе работает, но когда я обновляю страницу то получаю ошибку 404 - `Cannot GET /endpoint_path`, то есть на сколько я понял если включить html5Mode в ангуляре то браузер просто отсылает напрямую запрос на 8000й порт фронтенда и там конечно же нету никакого ответа, потому что это фронт и там нету серверной части.
Как это пофиксить, подскажите?
P.S. пробовал добавлять тег в мой index.html:
<base href="/">
Ничего не поменялось
|
|
04.09.2018, 09:05
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
SiriusED,
Обрабатывать на ноде запросы страниц и отсылать index.html, а ангуляровский роутер распарсит урл и отрисует нужный компонент. Как-то так
const express = require('express');
const app = express();
...
/* change server routing by angular ui router */
app.use('/', function(req, res) {
res.sendFile(path.join(__dirname, 'app_client', "build", 'index.html'));
});
...
|
|
04.09.2018, 10:16
|
Новичок на форуме
|
|
Регистрация: 27.05.2017
Сообщений: 9
|
|
destus,
Я пробовал через експресс, index.html возвращает но бандлы вебпаковские не грузятся почему-то, вот такие вот ошибки выдает в консоли:
https://goo.gl/Dk9zUP
Еще пробовал через какой-то модуль ` connect-history-api-fallback` сделать, но я так и не понял как через него это сделать
А во обще без интеграции експресса этого ни как не реализовать на Angular 1.6?
Последний раз редактировалось SiriusED, 04.09.2018 в 10:48.
|
|
04.09.2018, 11:27
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
Цитата:
|
бандлы вебпаковские не грузятся почему-то, вот такие вот ошибки выдает в консоли
|
Ну так раздавайте статику тем же экспрессом и ошибок не будет.
Цитата:
|
А во обще без интеграции експресса этого ни как не реализовать на Angular 1.6?
|
Это можно реализовать любым веб-сервером https://github.com/angular-ui/ui-rou...with-html5mode
|
|
04.09.2018, 23:46
|
Новичок на форуме
|
|
Регистрация: 27.05.2017
Сообщений: 9
|
|
Я пробовал для nginx сетапить:
Nginx Rewrites
server {
server_name my-app;
index index.html;
root /path/to/app;
location / {
try_files $uri $uri/ /index.html;
}
}
Но все равно получаю 404ю ошибку на всех страницах кроме рута "/"
|
|
11.09.2018, 12:01
|
Новичок на форуме
|
|
Регистрация: 27.05.2017
Сообщений: 9
|
|
destus,
Это можно реализовать любым веб-сервером
У меня сервер для UI - nginx, запущен он в docker container, я пробовал вводить try_files $uri $uri/ /index.html;, Но ничего не работает, как это можно хотя бы продебажить как то или что?
|
|
11.09.2018, 17:35
|
|
Профессор
|
|
Регистрация: 18.05.2011
Сообщений: 1,207
|
|
Я без понятия какие у вас настройки, но что написано в server_name и в root не поддается никакому логическому обьяснению. Я более чем уверен что ваше приложение не лежит ни в какой папке по пути /path/to/app. Есть дока по nginx, на русском, гляньте.
|
|
12.09.2018, 00:47
|
Новичок на форуме
|
|
Регистрация: 27.05.2017
Сообщений: 9
|
|
destus,
Ну я когда подключаюсь к docker'у, то там все бандлы моего приложения как раз таки лежат по пути usr/nginx/app/html/, и там и conf.d и index.html лежат тоже, докер контейнер, думаю знаете что такое..
Вот так у меня запускается и работает аппликейшен, вот по тому и рут такой, или рут должен быть не там где приложение лежит а просто / и все?
|
|
|
|