Реализация углового универсала с существующим экспресс-сервером

#javascript #angular #express #server-side-rendering #angular-universal

Вопрос:

У меня есть Express сервер, который служит Angular приложением в качестве статического контента, но он также выполняет множество других функций. Теперь я хочу добавить Server-side Rendering с Angular Universal помощью, но это создает новый Express сервер , который будет обслуживать Angular приложение. Как мы можем обслуживать Angular Universal уже существующее Express приложение? Это должно быть общей особенностью, так как многие проекты не были реализованы Angular Universal с самого начала, и их необходимо добавить на уже существующий сервер. Странно, что в официальных Angular документах об этом ничего не говорится.

Я хочу упомянуть , что я реализовал Express сервер с JavaScript помощью, а не TypeScript .

Ответ №1:

Возможно, попробуйте что-то подобное из вашего существующего экспресс-приложения

 const server = require(`dist/server/main.js`);//file generated by angular universal
const universalApp = server.app();

const server = <your existing express server>;
server.use('/frontappUrl', universalApp);

server.listen(<port>,...);
 

Комментарии:

1. Эй, спасибо за твой ответ. На самом деле я решил не использовать Angular Universal, потому что это не сработало, так как я использовал объект «окно» во многих местах своего приложения, а Angular Universal не может отображать объект «окно» на стороне сервера, поэтому я потерял бы некоторые функции. Я реализовал «prerender.io» вместо этого служба. В любом случае, я попробую ваше решение, чтобы проверить, сработает ли оно, так как я пытался понять, как бы я использовал его с существующим экспресс-сервером, и поскольку в документах об этом ничего нет, ваш ответ будет полезен всем остальным, у которых есть такая же проблема, если это рабочее решение.