Как выполнить переход от `provideModuleMap (LAZY_MODULE_MAP)` в Angular 8 к Angular 9 - PullRequest
2 голосов
/ 04 мая 2020

У меня есть большое приложение, которое работало с SSR, используя ngExpressEngine в Angular 8. Я выполнил все описанные процедуры обновления, но мой файл server.ts не был перенесен должным образом. В частности, ссылка на provideModuleMap осталась (что больше не поддерживается в Angular 9).

Обратите внимание, что все мои маршруты были правильно обновлены, чтобы использовать новую систему .then для отложенных маршрутов. Также обратите внимание, что он компилируется нормально и ng serve работает правильно. Эта проблема возникает, только когда я пытаюсь запустить пакет SSR из express.

Моя проблема может быть изолирована от того, что было в Angular 8, этими строками кода:

// * NOTE :: leave this as require() since this file is built Dynamically
const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require('./dist/server/main');


  // Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
  app.engine('html', ngExpressEngine({
    bootstrap: AppServerModuleNgFactory,
    providers: [
      provideModuleMap(LAZY_MODULE_MAP)
    ]
  }));

Чтобы попытаться заставить это работать в Angular 9, я удалил вызов provideModuleMap(LAZY_MODULE_MAP) и просто передал LAZY_MODULE_MAP, но это не работает, поскольку кажется, что LAZY_MODULE_MAP больше не генерируется.

... поэтому с моим изменением на Angular 9 я получаю типичные ошибки, которые вы ожидаете от вещей, которые пытаются запустить на стороне сервера, которые могут работать только на стороне клиента. А именно ReferenceError: window is not defined.

Итак, как мне сказать Angular 9, какие модули не следует готовить для SSR, как это было возможно в Angular 8?

...