Как развернуть Angular 9 универсальное приложение с функциями Firebase - PullRequest
5 голосов
/ 27 февраля 2020

Я недавно обновился до последней angular версии 9 и создал приложение. Я сделал это приложение универсальным, используя команду: ng add @ nguniversal / express -engine, а затем я создаю приложение, используя: npm run build: ssr && npm run serve: ssr

now dist папка создана с браузером и папкой сервера в ней, но нет сервера. js файл был создан в каталоге dist root, а также файл конфигурации webpack не был создан при сборке приложения с angular 9. Пожалуйста, сообщите мне путь о том, как я могу развернуть мое новое приложение на базе angular 9 универсального для облачных функций Firebase и хостинга

1 Ответ

2 голосов
/ 18 апреля 2020

с angular 9 теперь у вас будет следующая структура сборки

 dist            
  ├── server            
  |    └── main.js and some other files like firebase analytics stuff       
  └── browser                
       └── index.html and all files for the broswer 

, чтобы проверить это, вам нужно дать следующую команду из вашего проекта root dir

node dist/server

это вызовет основной файл. js в папке сервера, и ваше приложение будет обслуживаться локально. На экране будет отображаться информация о локальном URL-адресе с портом.

Теперь для развертывания в firebase используйте следующий код

import * as functions from 'firebase-functions';
import * as path from 'path';

const app = require(path.resolve(__dirname, "./dist/server/main")).app; // change the path according to your project structure
const myApp = functions.https.onRequest(app());

, и у вас будет функция myApp, где вы можете доступ к вашему приложению Angular SSR

[ОБНОВЛЕНИЕ]

Нет фиксированного места, где вы инициализируете свои функции. все, что имеет значение, - это то, что путь dist/server/main является правильным в функции myApp

Еще одна вещь, которую я забыл упомянуть, это то, что вы должны обновить свой пакет. json поле хостинга до следующей конфигурации =>

  ...
  "hosting": [{
        "target": "app",
        "public": "/dist/browser", // change it according to your directory structure
        "rewrites": [{
            "source": "**",
            "function": "myApp"
        }]
  }]
  ...

надеюсь, это поможет;)

...