Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Angular 1.6 + NodeJS + Webpack, Использование html5Mode (https://javascript.ru/forum/angular/75111-angular-1-6-nodejs-webpack-ispolzovanie-html5mode.html)

SiriusED 03.09.2018 17:11

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="/">

Ничего не поменялось

destus 04.09.2018 10:05

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'));
});
...

SiriusED 04.09.2018 11:16

destus,
Я пробовал через експресс, index.html возвращает но бандлы вебпаковские не грузятся почему-то, вот такие вот ошибки выдает в консоли:
https://goo.gl/Dk9zUP

Еще пробовал через какой-то модуль `connect-history-api-fallback` сделать, но я так и не понял как через него это сделать

А во обще без интеграции експресса этого ни как не реализовать на Angular 1.6?

destus 04.09.2018 12:27

Цитата:

бандлы вебпаковские не грузятся почему-то, вот такие вот ошибки выдает в консоли
Ну так раздавайте статику тем же экспрессом и ошибок не будет.
Цитата:

А во обще без интеграции експресса этого ни как не реализовать на Angular 1.6?
Это можно реализовать любым веб-сервером https://github.com/angular-ui/ui-rou...with-html5mode

SiriusED 05.09.2018 00:46

Я пробовал для nginx сетапить:
Nginx Rewrites

server {
    server_name my-app;
    
    index index.html;

    root /path/to/app;

    location / {
        try_files $uri $uri/ /index.html;
    }
}


Но все равно получаю 404ю ошибку на всех страницах кроме рута "/"

SiriusED 11.09.2018 13:01

destus,
Это можно реализовать любым веб-сервером

У меня сервер для UI - nginx, запущен он в docker container, я пробовал вводить try_files $uri $uri/ /index.html;, Но ничего не работает, как это можно хотя бы продебажить как то или что?

destus 11.09.2018 18:35

Я без понятия какие у вас настройки, но что написано в server_name и в root не поддается никакому логическому обьяснению. Я более чем уверен что ваше приложение не лежит ни в какой папке по пути /path/to/app. Есть дока по nginx, на русском, гляньте.

SiriusED 12.09.2018 01:47

destus,
Ну я когда подключаюсь к docker'у, то там все бандлы моего приложения как раз таки лежат по пути usr/nginx/app/html/, и там и conf.d и index.html лежат тоже, докер контейнер, думаю знаете что такое..

Вот так у меня запускается и работает аппликейшен, вот по тому и рут такой, или рут должен быть не там где приложение лежит а просто / и все?


Часовой пояс GMT +3, время: 07:32.