javascript - Node genererer bilde fra DOM


Jeg vil generere bilde eller blob fra DOM-element på Node.js. Siden Node ikke har DOM å håndtere, lager jeg en fra JSDOM. Min opprinnelige plan var å bruke dom-to-image-biblioteket, men det gir feil:

    (node:10384) UnhandledPromiseRejectionWarning: SyntaxError: The string did not match the expected pattern.
    at XMLHttpRequest.open (/home/webdev/servers/web/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:480:15)
    at about:blank:2:5649
    at new Promise (<anonymous>)
    at j (about:blank:2:5177)
(node:10384) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:10384) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Den andre planen var å generere canvas ved å bruke: html2canvas og lagre det som blob. Det mislyktes også ved å generere:

Error: Not implemented: window.scrollTo
    at module.exports (/home/webdev/servers/web/node_modules/jsdom/lib/jsdom/browser/not-implemented.js:9:17)
    at /home/webdev/servers/web/node_modules/jsdom/lib/jsdom/browser/Window.js:579:7
    at about:blank:6:156607 undefined
Error: Not implemented: HTMLCanvasElement.prototype.getContext (without installing the canvas npm package)
    at module.exports (/home/webdev/servers/web/node_modules/jsdom/lib/jsdom/browser/not-implemented.js:9:17)
    at HTMLCanvasElementImpl.getContext (/home/webdev/servers/web/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js:42:5)
    at HTMLCanvasElement.getContext (/home/webdev/servers/web/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js:41:47)
    at A.value (about:blank:6:43814)
    at new A (about:blank:6:134500)
    at about:blank:6:63123 undefined
(node:11033) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'scale' of null
(node:11033) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11033) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

window.scrollTo kan overskrives, men canvas er mer komplisert. Det finnes alle slags feil, inkludert canvas i JSDOM

Rullende fikser for det: https://github.com/jsdom/jsdom/pull/1964

Jeg tenkte også på å bruke Puppeteer som min virtuelle DOM siden det bruker headless Chrome, men det virker overdreven og kan også generere feil fordi du kjører en egen nettleser. (Jeg kan ikke engang kjøre headless Chrome på grunn av feil som sier at ingen sandkasse er tilgjengelig).

Mitt spørsmål er. Er det overhodet mulig å generere et bilde fra DOM på serversiden av Node.js-rammeverket?

Prosjektinformasjon:

Node-versjon - 10.11.0
Rammeverk - nestjs nyeste
JSDOM - 12.2.0
html2image - 1.0.0-alpha.12
dom-to-image - 2.6.0