在本地包的package.json中使用exports遇到的路径解析问题
问题分析与解决
问题根源
你当前shared/package.json里的"exports": "./src"配置,仅将包的根导入路径(即import "shared")映射到了./src目录,但未配置子路径的映射规则。因此尝试import foo from "shared/foo"时,Node.js找不到对应映射,只能退回到原始文件路径查找,必须写全shared/src/foo才能生效。
正确配置方式
要实现shared/foo这类简化导入,需在shared/package.json的exports字段中明确配置子路径映射:
{ "exports": { ".": "./src", // 根路径映射到src目录 "./foo": "./src/foo.js" // 子路径foo映射到src/foo.js } }
如果需要批量映射src下的所有文件(Node.js 16.10+支持),可使用通配符:
{ "exports": { ".": "./src", "./": "./src/" // 所有`shared/*`路径自动映射到`src/*` } }
配置完成后,就能直接用import foo from "shared/foo"导入shared/src/foo.js。
额外注意事项
- 确认Node.js版本符合要求:
exports子路径映射需要Node.js 12.20.0+、14.13.0+或16.0.0+版本支持。 - 若
src目录下存在index.js,配置".": "./src"后,import "shared"会自动加载src/index.js。
内容的提问来源于stack exchange,提问作者Malcolm Crum
相关产品推荐
相关产品推荐

