Angular 8 Universal ssr, окно в сторонней библиотеке - PullRequest
1 голос
/ 03 октября 2019

Я добавил универсальное в мое угловое приложение, используя @ 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

...