ESM项目中使用Bun.js无法导入uuid的问题排查
解决BunJS运行ESM项目时的
uuid默认导入报错问题 问题根源
- Bun原生支持ESM规范,完全不需要
esm包——这个包是给不支持原生ESM的旧版Node.js用的,装了反而会干扰Bun的模块解析。 uuid的ESM模块没有提供默认导出,Node.js借助esm加载器做了兼容(自动把命名导出集合转为默认导出),但Bun严格遵循ESM标准,所以直接写import uuid from 'uuid'会触发Missing 'default' import错误。
不修改业务代码的解决方案
方案1:移除esm并通过Bun别名做兼容
- 先卸载无用的
esm依赖:
npm uninstall esm
- 在项目根目录新建
bunfig.toml文件,添加别名配置,同时创建兼容文件:- 新建
uuid-compat.mjs:import * as uuid from 'uuid'; export default uuid; - 在
bunfig.toml里配置别名:[alias] "uuid" = "./uuid-compat.mjs"
- 新建
方案2:运行时临时注入兼容层
如果不想修改项目文件,可以用Bun的--inject参数在运行时临时补全默认导出:
bun run --inject "import * as u from 'uuid'; export default u":uuid index.mjs
验证执行
完成配置后,直接运行即可正常输出UUID:
bun index.mjs
示例输出:
New UUID: 7a4f9c8d-1b2c-3d4e-5f6a-7b8c9d0e1f2a
内容的提问来源于stack exchange,提问作者user1881582
相关产品推荐
相关产品推荐

