在NX工作区中使用additionalEntryPoints无法解析次级入口点
问题背景
我尝试为NX v17.1.2的包构建添加次级入口点,参考适配v16.8+的Rollup相关教程,采用简单目录结构:
- 在
project.json的build目标中配置additionalEntryPoints指向packages/core/src/utils/index.ts - 在包的
package.json中添加了exports字段
但在包目录下运行nx build时出现错误:
Error during bundle: Error: Could not resolve entry module (packages/core/src/utils/index.ts).
该文件实际存在,以下是可能的原因及排查方向:
路径相对基准错误
当你在包目录(packages/core)下运行nx build时,Rollup会以当前目录为基准解析路径,此时配置的packages/core/src/utils/index.ts会被解析为packages/core/packages/core/src/utils/index.ts,显然不存在。
解决:将additionalEntryPoints改为相对于包根目录的路径src/utils/index.ts,或者回到NX项目根目录执行nx build core。NX配置中路径解析规则冲突
NX的Rollup构建目标默认以project.json所在的包根目录为路径基准,若additionalEntryPoints使用了项目根目录的绝对路径格式,会导致解析失败。检查project.json中build.options.additionalEntryPoints的路径是否为包内相对路径。package.json exports配置与源路径不匹配
若exports字段配置的是构建后的输出路径,但源文件路径配置错误,会导致Rollup无法定位源文件。例如exports中写了"./utils": "./dist/utils/index.js",但additionalEntryPoints指向的源路径与输出路径的映射关系错误,需确保源路径与exports对应的源入口一致。缓存或构建残留干扰
NX的缓存机制可能保留旧的配置或构建产物,导致路径解析异常。执行以下命令清理缓存后重新构建:nx reset nx build core文件大小写或扩展名不匹配
在区分大小写的系统(Linux/macOS)中,若配置中的路径大小写与实际文件不一致(如Index.tsvsindex.ts),或文件扩展名错误(如实际是.tsx但配置写.ts),会导致解析失败。检查文件名称和扩展名是否完全匹配。Rollup插件配置缺失
若次级入口文件是TypeScript文件,但NX的Rollup构建配置中未启用@rollup/plugin-typescript或相关TS处理插件,会导致Rollup无法解析.ts文件。检查project.json中build.options.plugins是否包含TS处理插件。
内容的提问来源于stack exchange,提问作者Doug

