我有一个包正在构建到一个名为lib
的目录中,其结构如下:
- lib/
-- moduleA/
---- index.js
-- moduleB/
---- index.js
- src/
-- moduleA/
-- moduleB/
并且在package.json
中指定:
"main": "./lib"
在另一个项目中,我尝试从上面的包导入一个特定的模块,如下所示:
import moduleA from '@scope/packageA/moduleA';
但Webpack无法解析该模块,表示:
未找到模块:错误:无法解析“@scope/软件包A/模块A”
但是,如果我直接从lib
导入,它确实可以工作:
import moduleA from '@scope/packageA/lib/moduleA;
为什么会发生这种情况?我的理解是Webpack尊重包的main
条目,并且应该可以从入口点开始的层次结构中的任何地方导入。
1条答案
按热度按时间yhqotfr81#
我可能晚了几年,但如果有人需要一个可能的答案:
您可以使用
package.json
中的exports
字段来定义哪些目录解析为哪些模块,使用问题中的示例,您可能需要这样的内容:这将帮助Node正确解析程序包导入,并将其从以下位置“转换”:
致:
请注意,这适用于Node v12+,之前的任何版本都将使用
main
字段作为包的条目。这方面还有很多内容,因为您可以有条件地指定入口点,并使用它们构建不同的Javascript格式(CommonJS和EMS),请务必查看文档