为何babel.config使用.cjs扩展名会导致module-resolver失效?
问题:Expo中使用.cjs格式Babel配置导致module-resolver路径别名失效
已创建包含详细README的最小复现示例。
在Expo应用中配置babel-plugin-module-resolver路径别名时,Metro打包会失败。将babel.config的扩展名从.cjs改为.js后,问题得以解决,但无法理解其中原因。
根据Babel官方文档,Babel支持Node.js原生支持的所有文件扩展名,其中明确包含cjs;且Expo默认使用module.exports创建CommonJS格式的babel.config文件。
从未提交过GitHub Issue,但不确定此问题是否更适合提交至babel-plugin-module-resolver仓库,或是需要进一步排查以确定Expo或其他Babel插件是否相关。
排查过程
- 使用
npx create-expo-app创建新的Expo应用,验证是否是原有项目的问题 - 添加路径别名到测试组件并通过别名导入后,运行Expo打包成功
- 将babel.config重命名为.cjs并使用
--clear参数重新运行Expo,打包失败并提示“Unable to resolve [path alias]...”
原本认为.cjs扩展名不会影响module-resolver的正常工作,但实际改为.js后问题才解决。
内容的提问来源于stack exchange,提问作者aDevCalledAlex
相关产品推荐
相关产品推荐

