Grover.to_pdf: ReadableStream не определен

У меня есть приложение Rails, которое использует драгоценный камень Grover Ruby, и оно прекрасно конвертирует HTML в изображения, но когда я пытаюсь преобразовать его в PDF, как показано ниже, я получаю сообщение об ошибке, сообщающее, что ReadableStream не определен.

html = ExportController
        .new
        .render_to_string({
                            template: '/export/index',
                            layout: 'pdf'
                          })
pdf = Grover.new(html).to_pdf
send_data pdf, filename: 'export', type: 'application/pdf'

Я подозревал, что это как-то связано с зависимостями, но все версии были правильными и не имели конфликтов. Я проверил проблемы на GitHub и не нашел ничего, что соответствовало бы этой проблеме, так что я думаю, что это что-то с моей стороны, но я не могу это точно определить.

🤔 А знаете ли вы, что...
Фреймворк предоставляет множество инструментов для оптимизации производительности, включая использование кэширования и управление запросами.


2
386
2

Ответы:

Решено

У меня была такая же проблема здесь, в производстве, на AWS EC2. Проблема была решена путем понижения версии пакета до версии 21.11.0.

yarn remove puppeteer

yarn add [email protected]

Такая же проблема локально. Я манипулировал использованием Гровером процессора.cjs, чтобы показать локальную версию узла, и он работал на v16. По умолчанию на моем компьютере установлена ​​версия v20, но PATH, предоставленный Гроверу, не включал версию моего узла. Сначала я попробовал добавить "engines": { "node": "20.x" } к package.json на Гровере и собрать драгоценный камень локально, но это тоже не сработало. Наконец, я создал файл config/initializers/grover.rb со следующим:

# frozen_string_literal: true
Grover.configure do |config|
  config.node_env_vars = {
    "PATH" => "~/.nvm/versions/node/v20.3.1/bin:#{ENV['PATH']}"
  }
end

Это кажется хрупким способом решения проблемы, но он сработал. Хотелось бы услышать о более постоянном решении.