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

如何将.mjs文件转换为.js文件?解决主机不支持.mjs的问题

将.mjs转换为兼容主机的.js文件的方案

针对你把PDF.js封装进WordPress插件的场景,这里有几个实用的解决方法,不需要用户升级主机:

1. 用打包工具构建通用.js版本

这是处理大型库(比如PDF.js)最可靠的方式,通过打包工具把ES模块(.mjs)转换成浏览器/Node.js通用的非模块格式(如IIFE、UMD)。

以Rollup为例,操作步骤:

  1. 准备好PDF.js的源码(克隆仓库或拿到你使用的.mjs文件集合)
  2. 创建rollup.config.js配置文件:
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  input: 'src/main.mjs', // 替换为PDF.js的主入口文件路径
  output: {
    file: 'dist/pdf.bundle.js',
    format: 'iife', // 生成可直接通过<script>引入的立即执行函数
    name: 'PDFJS' // 全局变量名,方便在插件代码中调用PDF.js的API
  },
  plugins: [resolve(), commonjs()] // 处理模块依赖和CommonJS转换
};
  1. 安装依赖:npm install rollup @rollup/plugin-node-resolve @rollup/plugin-commonjs --save-dev
  2. 执行打包:npx rollup -c
    打包完成后,pdf.bundle.js就是可以直接在WordPress插件中使用的.js文件,不需要主机支持.mjs。

如果习惯用Webpack,只需把输出格式配置为umd,同样能生成兼容的通用版本。

2. 直接使用PDF.js官方预构建的非模块版本

PDF.js官方已经提供了无需ES模块支持的预构建包,你可以直接下载使用:

  • 查找PDF.js发布包中带有legacy标签的版本,这类包已经打包成了传统的.js文件,直接用<script>标签引入即可,无需自己处理转换。

3. 手动修改模块语法(仅适合小型文件)

如果是少量简单的.mjs文件,可以手动将ES模块语法改为全局变量或CommonJS格式:

  • 将import { xxx } from './module.mjs'改为依赖全局变量的形式,或者把export内容挂载到window对象上:
    示例:
    // 原.mjs
    export function renderPDF() { /* ... */ }
    
    // 修改后的.js
    window.PDFJS = window.PDFJS || {};
    window.PDFJS.renderPDF = function() { /* ... */ };
    

但注意:这种方法不适用于PDF.js这类依赖复杂的大型库,手动修改极易出错。

内容的提问来源于stack exchange,提问作者TwisterMc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:54:57