Al intentar agregar SSR a una aplicación Angular/Ionic existente, siguiendo la guía de Ionic SSR, aparece el siguiente error TypeError: head.querySelector is not a function Después de navegar a través de main.js , encontré que >>>
bootstrapLazy = __name((lazyBundles, options = {}) => { const endBootstrap = createTime(), cmpTags = [], exclude = options.exclude || [], customElements2 = win.customElements, head = doc.head, metaCharset = head.querySelector("meta[charset]"), <<------ Triggers error visibilityStyle = doc.createElement("style"), deferredConnectedCallbacks = [], styles2 = doc.querySelectorAll("[sty-id]");Dependencias angulares/iónicas:
"@angular/cdk": "^13.3.3", "@angular/common": "~13.3.5", "@angular/core": "~13.3.5", "@angular/forms": "~13.3.5", "@angular/localize": "^13.3.5", "@angular/material": "^13.3.0", "@angular/platform-browser": "~13.3.5", "@angular/platform-browser-dynamic": "~13.3.5", "@angular/platform-server": "~13.3.5", "@angular/router": "~13.3.5", "@ionic/angular": "^6.0.0", "@ionic/angular-server": "^6.1.4-dev.11651091997.1bc6fa6b", He agregado el código requerido en server.ts que consiste en
const domino = require('domino'); const fs = require('fs'); const path = require('path'); // Use the browser index.html as template for the mock window const template = fs .readFileSync( path.join(join(process.cwd(), 'dist/app/browser'), 'index.html') ) .toString(); // Shim for the global window and document objects. const win = domino.createWindow(template); global['window'] = win; global['self'] = win; global['Node'] = win.Node; global['Event'] = win.Event; global['KeyboardEvent'] = win.Event; global['MouseEvent'] = win.Event; global['Event']['prototype'] = win.Event.prototype; global['IDBIndex'] = win.IDBIndex; global['document'] = win.document; global['doc'] = win.document; global['navigator'] = win.navigator;PD: Este no es todo el código, sino la parte que se requiere para que no se muestren los problemas de DOM.