Узел генерирует изображение из DOM - PullRequest
0 голосов
/ 18 октября 2018

Я хочу сгенерировать изображение или блоб из элемента DOM на nodejs.Поскольку узел не имеет DOM для обработки, я создаю его из JSDOM.Первоначально я планировал использовать библиотеку dom-to-image, но в ней были ошибки:

    (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.

Второй план заключался в том, чтобы сгенерировать canvas с помощью: html2canvas и сохранить его как blob.Это также не удалось сгенерировать:

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 может быть перезаписано, но canvas более сложный.В JSDOM

есть всевозможные ошибки, включая исправление ошибок: https://github.com/jsdom/jsdom/pull/1964

Также я думал об использовании кукловода в качестве моего виртуального DOM, поскольку он использует безголовый хром, но это кажется излишнима также может генерировать ошибки, потому что вы используете отдельный браузер.(Я даже не могу запустить Chrome без головы из-за ошибок, указывающих на отсутствие доступной песочницы).

У меня вопрос.Можно ли вообще сгенерировать образ из DOM на серверной стороне framework_js?

Информация о проекте:

Версия узла - 10.11.0Framework - последние новостиJSDOM - 12.2.0html2image - 1.0.0-alpha.12дом-к-изображению - 2.6.0

...