Я реализовал SSR для своего проекта и развернул его на героку.
Теперь, когда я запускаю приложение в heroku logs --tail, у меня работает много вещей, и это значительно снижает производительность. Большинство вещей являются ошибками:
ERROR ReferenceError: document is not defined
Хотя я использую такие конструкции:
if (isPlatformBrowser(this.platformId)) {
const overflow = this.isMenuOpened ? 'hidden' : 'auto;';
this.renderer.setStyle(this.document.body, 'overflow', overflow);
}
Каждый раз, когда я перезагружаю страницу, эта штука снова запускается.
В моем файле package.json у меня есть следующие команды для запуска:
"scripts": {
"ng": "ng",
"start": "node dist/server.js",
"build": "npm run build:server:prod && npm run build:browser:prod",
"build:server:prod": "ng run oilEnergy:server && webpack --config webpack.server.config.js --progress --colors",
"build:browser:prod": "ng build --prod"
}
Поэтому, когда Heroku развертывается, он создает папки сервера и браузера и компилирует файл server.js, который затем отвечает за запуск моего приложения.
Через некоторое время мое приложение вылетает, и вместо моего приложения на героку отображается Application error.
Я понятия не имею, почему это происходит. Может быть, у кого-то была эта проблема раньше?
@HarunYılmaz да, у меня был этот конструктор импорта (частный рендерер: Renderer2, @Inject(DOCUMENT) частный документ: Document) {}





попробуйте с document вместо this.document
следующий код работает для меня
import { PLATFORM_ID, Inject } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
constructor(
@Inject(PLATFORM_ID) private platformId: Object) {
if (isPlatformBrowser(this.platformId)) {
this.bodyTag = document.getElementsByTagName('body')[0];
this.htmlTag = document.getElementsByTagName('html')[0];
}
}
вы сделали инъекцию
documentправильно?