У меня есть 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 начинается и заканчивается символом /, как я видел другие посты, в которых упоминалось это требование.