Rails应用用Grover gem转PDF报错:ReadableStream未定义
解决Grover转PDF时「ReadableStream is not defined」错误
排查方向和解决办法
检查Chrome/Chromium版本兼容性
ReadableStream是现代浏览器API,Grover依赖Chrome/Chromium完成渲染,确保你的浏览器版本不低于78(该版本开始稳定支持ReadableStream)。在终端执行google-chrome --version或chromium --version查看版本,版本过低直接升级到最新稳定版即可。调整Grover配置参数
尝试在初始化Grover时添加额外配置,强制启用必要特性或关闭可能冲突的选项:pdf = Grover.new(html, { emulate_media: 'screen', wait_for_network_idle: true, disable_webkit_features: 'none' }).to_pdf也可以针对性配置PDF渲染选项:
pdf = Grover.new(html, { pdf_rendering_options: { print_background: true } }).to_pdf排查渲染的HTML内容
先把Rails渲染生成的HTML保存到本地:File.write('test.html', html)再用Grover的命令行工具直接测试转PDF:
grover test.html --output test.pdf若命令行能正常生成PDF,说明问题出在Rails环境下的Grover配置;若命令行也报错,就是HTML模板/布局里存在依赖ReadableStream的前端代码,要么移除这部分代码,要么添加polyfill做兼容。
尝试更换Grover版本
即便你确认依赖版本无冲突,也可以试试升级到最新稳定版:bundle update grover或者降级到之前验证过的稳定版本,部分版本可能存在特定环境下的API兼容问题。
指定Chrome执行路径
确保Grover能正确找到Chrome/Chromium的可执行文件,初始化时手动指定路径:pdf = Grover.new(html, { executable_path: '/usr/bin/google-chrome' # 替换为你的实际Chrome路径 }).to_pdf
内容的提问来源于stack exchange,提问作者Marius Kressin
相关产品推荐
相关产品推荐

