You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:34:58