Я добавил универсальное в мое угловое приложение, используя @ ng-toolkit / universal
после сборки и во время работы сервера у меня была такая ошибка: var matches = window.Element.prototype.matches;ReferenceError: window is not defined
этот фрагмент кода находится в третьемсторонняя библиотека, которая использует объект окна, который не работает на сервере. Я попытался определить ее как глобальную переменную в файле server.ts, например,
const domino = require('domino');
const fs = require('fs');
const path = require('path');
const template = fs.readFileSync(path.join(__dirname, '.', 'dist', 'index.html')).toString();
const win = domino.createWindow(template);
global['window'] = win;
global['document'] = win.document;
, и я попытался использовать библиотеку только в браузере, например,
constructor(
@Inject(PLATFORM_ID) platformId: Object,
) {
this.isBrowser = isPlatformBrowser(platformId);
}
ngOnInit() {
if (this.isBrowser) {//do stuff}
}
, ноошибка сохраняется. Есть ли способ определить объект окна, чтобы его можно было использовать на сервере, или как игнорировать библиотеку при выполнении SSR