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

Rollup打包CodeMirror-Yjs编辑器报错:simple-peer未导出default

解决Rollup打包y-webrtc时simple-peer导出报错问题

问题根因

simplepeer.min.js是UMD格式的包,Rollup默认仅处理ES模块的导出规则,无法识别UMD包的默认导出逻辑,因此y-webrtc导入该模块时会抛出"default"未导出的错误。

可行解决方案

方案1:用Rollup插件处理UMD模块(推荐)

通过插件让Rollup正确解析UMD格式的模块:

  1. 安装必要的Rollup插件:
npm install --save-dev @rollup/plugin-commonjs @rollup/plugin-node-resolve
  1. 修改rollup.config.js,添加插件配置:
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  // 保留你的原有输入、输出配置
  plugins: [
    // 解析node_modules中的模块,适配浏览器环境
    resolve({
      browser: true,
      preferBuiltins: false
    }),
    // 处理CommonJS/UMD模块,显式指定simple-peer的导出项
    commonjs({
      include: 'node_modules/**',
      namedExports: {
        'node_modules/simple-peer/simplepeer.min.js': ['default']
      }
    }),
    // 保留你的其他插件(如babel、压缩插件等)
  ]
};

方案2:换用含ES模块的simple-peer版本

部分新版本的simple-peer提供了ES模块入口,可以尝试升级或指定对应版本:
在package.json中修改依赖:

{
  "dependencies": {
    "simple-peer": "^9.11.1"
  }
}

重新安装依赖:

npm install

方案3:临时修改y-webrtc的导入逻辑(不推荐)

如果前两种方案无效,可临时修改node_modules/y-webrtc/src/y-webrtc.js的导入代码:

// 替换原import语句
// import SimplePeer from 'simple-peer'
const SimplePeer = require('simple-peer').default || require('simple-peer');

⚠️ 注意:该修改会在依赖更新后被覆盖,需自行维护,仅作为临时应急方案。

验证修改

完成配置修改后,重新执行打包命令:

npm run dist

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:05:05