Angular Универсальный SSR с виртуальным путем - PullRequest
1 голос
/ 18 марта 2020

У меня есть Angular 8 Универсальное серверное приложение с сервером Express. В производственной среде приложение должно быть доступно через виртуальный путь «/ приложение / партнер». Я перепробовал много вещей, но я все еще застрял. Для начала я настроил baseHref как "/ app / partner /". Но я борюсь с конфигурацией Express. Предыдущий код был:

// Rest API endpoints, we're also hosting a Node API.
app.use('/api/v1', router);

// Serve static files from /browser
app.get('*.*', express.static(DIST_FOLDER, {
  maxAge: '1y'
}));

// All regular routes use the Universal engine
app.get('*', (req, res) => {
  res.render('index', { req });
});

Моя цель - не касаться выходного пути, я хочу использовать виртуальные пути.

Итак, я изменил его на:

// Rest API endpoints, prepended virtual path
app.use('/app/partner/api/v1', router);

// static files, created virtual path
app.use('/app/partners', express.static(DIST_FOLDER, {
   maxAge: '1y'
}));

// Angular requests doesn't change
app.get('*', (req, res) => {
  res.render('index', { req });
});

Так что на бумаге это выглядит великолепно. Но это не работает полностью. Когда я раскручиваю сервер узла локально и с go до http://localhost: 4000 / app / partner или http://localhost: 4000 / , он перенаправляет на / app / partner / приложение / партнер. Приложение прекрасно загружается, и я также могу обновить sh.

Мне кажется, что Angular по-прежнему получает переписанный URL (т.е. просто / вместо /app/partner) и решает добавить его на URL.

Я также дважды проверил, что базовый href начинается и заканчивается символом /, как я видел другие посты, в которых упоминалось это требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...