У меня есть приложение 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 и не нашел ничего, что соответствовало бы этой проблеме, так что я думаю, что это что-то с моей стороны, но я не могу это точно определить.
🤔 А знаете ли вы, что...
Фреймворк предоставляет множество инструментов для оптимизации производительности, включая использование кэширования и управление запросами.
У меня была такая же проблема здесь, в производстве, на 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
Это кажется хрупким способом решения проблемы, но он сработал. Хотелось бы услышать о более постоянном решении.