Новое обновление безопасности Chrome 64, похоже, сломало библиотеки htmlToImage. Ни один из стилей не рассчитывается правильно и отображается так, как если бы стили вообще не применялись.
Кто-нибудь знает обходной путь / исправление? Нужно ли мне разместить свой CSS на сервере и разрешить CORS?





Я только что исправил эту ошибку.
Разветвил библиотеку и сделал запрос на перенос. Пока он не будет объединен, вы можете использовать разветвленное репо: https://github.com/kmap-io/html-to-image
заменив цель html-to-image в вашем package.json на:
"html-to-image": "git+https://github.com/kmap-io/html-to-image.git"
О баге
Chrome жалуется (выдает ошибку) на попытку чтения несуществующего свойства. Firefox тоже жалуется, но выдает только предупреждение, а не ошибку. Исправление состоит в замене
if (sheet.cssRules) {
...
с участием
if (sheet.hasOwnProperty('cssRules')) {
...
Обратной стороны нет (например: когда cssRules существует на sheet, который является таблицей стилей, скрипт выполняет итерацию по правилам и добавляет их в документ, как и предполагалось).
Как исправить (пока он не будет объединен).
По какой-то причине простая замена репозитория библиотеки на вилку, в которой я зафиксировал изменение, не работает для этого пакета. Я попросил автора библиотеки добавить инструкции о том, как строить после запроса на вытягивание, поскольку они заявляют в readme запросы на вытягивание, и предложения приветствуются. А пока вот как применить исправление с помощью patch-package:
"prepare": "patch-package" в scripts, в package.json вашего проектаnpm i patch-package --save-devnode_modules/html-to-image/lib/embedWebFonts.js измените строку 7 сtry {
к
if (sheet.hasOwnProperty('cssRules')) try {
npx patch-package html-to-imageЕсли у вас есть сценарий развертывания, который создает ваш проект с нуля, вам необходимо применить исправления прямо перед вызовом npm run build (или аналогичного, в зависимости от вашего стека):
git apply --ignore-whitespace patches/*.patch
Вот об этом.
Когда исправление будет объединено, вам нужно будет запустить:
npx patch-package html-to-image --reverse
@mcottingham Я получаю ту же ошибку. Мне не удалось найти способ правильно собрать модуль. Я попросил владельца модуля обновить их ридми о том, как это сделать. Однако я нашел, как применить изменение без разветвления, с модулем patch-package, и сейчас тестирую его. Я обновлю свой ответ после того, как заставлю его работать локально, со всеми необходимыми шагами.
@mcottingham, я обновил все шаги, которые я сделал, чтобы заставить его работать для меня.
Отлично, спасибо! Мне нужно изменить импорт с import htmlToImage from 'html-to-image' на import * as htmlToImage from 'html-to-image', и теперь он отлично работает!
Я получаю сообщение об ошибке. Модуль не найден: не удается разрешить преобразование HTML в изображение. Есть предположения?