升级react-pdf至9.1.0后PDF加载失败:MIME类型错误求助
问题分析与解决方案
问题概述
升级react-pdf至9.1.0、pdfjs至4.4.168后,生产环境出现PDF加载失败,报错:
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec.
本地环境运行正常,但生产环境中pdf.worker.min.mjs文件的Content-Type被识别为application/octet-stream,已尝试在OpenResty中添加application/javascript js mjs;配置但未解决问题。
可能的解决方向
1. 确认OpenResty配置是否正确生效
- 检查MIME配置是否放在http全局块下(而非单个server或location内),确保全局规则生效:
http { include mime.types; default_type application/octet-stream; # 新增mjs的MIME映射 types { application/javascript js mjs; } ... } - 修改配置后必须重启OpenResty服务,否则新配置不会生效。
2. 针对mjs文件单独配置MIME规则
如果全局配置不生效,可在处理静态文件的location块中单独指定MIME类型,确保优先级高于其他规则:
location ~* \.(js|mjs)$ { types { application/javascript js mjs; } root /path/to/your/static/assets; expires 1y; add_header Cache-Control "public, immutable"; }
3. 检查CDN/反向代理的MIME覆盖问题
如果生产环境使用了CDN或额外的反向代理服务,这些服务可能会覆盖服务器返回的Content-Type。需要在CDN的配置面板中添加mjs对应application/javascript的MIME映射规则。
4. 验证构建产物与打包配置
- 确认打包后的
pdf.worker.min.mjs文件未损坏,扩展名未被错误修改。 - 检查Webpack/Vite等构建工具的配置,确保没有将mjs文件误处理为二进制资源输出。
5. 核对版本兼容性
react-pdf 9.1.0可能对pdfjs版本有特定适配要求,可查看react-pdf的版本说明文档,确认是否需要将pdfjs调整为指定兼容版本。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

