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

使用Rollup打包Firebase项目时出现XhrIo导出错误求助

Rollup打包Firebase应用时出现"XhrIo"未导出错误

完整错误信息

[!] RollupError: "XhrIo" is not exported by "node_modules/@firebase/webchannel-wrapper/dist/index.js", imported by "node_modules/@firebase/firestore/dist/index.esm2017.js"

问题背景

使用Rollup 3.8.1打包TypeScript Web应用,集成Firebase 9.15.0时触发上述错误。核心原因是@firebase/firestore的ESM入口文件尝试从@firebase/webchannel-wrapper导入XhrIo,但Rollup解析时优先选择了该包的主入口文件(main字段对应的dist/index.js),而非专门的模块入口(module字段对应的dist/index.esm2017.js)。

@firebase/webchannel-wrapper的package.json相关配置:

{
  "main": "dist/index.js",
  "module": "dist/index.esm2017.js",
  "esm5": "dist/index.esm.js"
}

应用核心代码:

import { initializeApp } from 'firebase/app'
import { getFirestore } from 'firebase/firestore'

// ...

// 初始化Firebase
export const firebaseApp = initializeApp(firebaseConfig)
export const db = getFirestore(firebaseApp)

tsconfig.json关键配置:

{
  "target": "es2022",
  "module": "esnext",
  "moduleResolution": "node"
}

解决方案

1. 调整@rollup/plugin-node-resolve的解析优先级

在Rollup配置文件中,修改@rollup/plugin-node-resolve的mainFields参数,让它优先读取module字段指定的入口:

import resolve from '@rollup/plugin-node-resolve';

export default {
  // 其他配置...
  plugins: [
    resolve({
      mainFields: ['module', 'main'], // 优先解析module入口
      extensions: ['.js', '.ts']
    }),
    // 其他插件(如typescript插件)...
  ]
};

2. 用alias强制指定ESM入口

如果第一种方法无效,通过@rollup/plugin-alias直接映射@firebase/webchannel-wrapper到它的ESM文件:

import alias from '@rollup/plugin-alias';
import resolve from '@rollup/plugin-node-resolve';

export default {
  // 其他配置...
  plugins: [
    alias({
      entries: [
        { find: '@firebase/webchannel-wrapper', replacement: '@firebase/webchannel-wrapper/dist/index.esm2017.js' }
      ]
    }),
    resolve(),
    // 其他插件...
  ]
};

3. 更新依赖版本

尝试升级Rollup到最新稳定版,或者将Firebase相关依赖更新到兼容版本,部分版本间的兼容性问题可能导致模块解析异常。

4. 修改TypeScript的模块解析策略

将tsconfig.json中的moduleResolution改为bundler(需TypeScript 4.7及以上版本),更适配打包工具的解析逻辑:

{
  "moduleResolution": "bundler"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:50:18