GitHub Actions构建npm工作区时出现TS2307找不到本地模块错误
解决GitHub Actions中npm工作区依赖包TS2307找不到的问题
核心排查方向:CI环境是全新构建,必须确保依赖包先构建、工作区关联正确
以下是针对你的场景的具体解决方案,按优先级尝试:
先在CI中构建依赖包
@d-matrix/icons-react
本地构建时你可能已经提前编译过icons-react,但GitHub Actions是全新环境,icons-site依赖的是icons-react的构建产物(比如dist目录的类型文件)。所以要调整CI脚本的执行顺序:- 根目录执行
npm install(确保工作区所有依赖都安装) - 先执行构建
icons-react的命令,比如npm run build:icons(你需要在根package.json中添加这个脚本,指向packages/icons-react的build命令) - 再执行
npm run build:site
- 根目录执行
确认
icons-site的依赖配置是工作区协议
检查packages/icons-site/package.json中对@d-matrix/icons-react的依赖写法:
必须是"@d-matrix/icons-react": "workspace:*",而不是具体版本号(比如^1.0.0)。这样npm在工作区环境中会直接关联本地包,而不会去远程仓库拉取,避免CI环境中找不到本地包的问题。检查TypeScript配置的类型文件路径
确保icons-site的tsconfig.json能正确识别icons-react的类型定义:- 如果
icons-react构建后会生成dist目录包含.d.ts文件,在icons-site的tsconfig中,把../icons-react/dist加入include数组:{ "include": [ "src/**/*", "../icons-react/dist/**/*.d.ts" ] } - 或者配置
paths映射:{ "compilerOptions": { "baseUrl": ".", "paths": { "@d-matrix/icons-react": ["../icons-react/src"] } } }
- 如果
CI中避免单独安装子包依赖
不要在CI中执行npm install --prefix packages/icons-site这种单独安装子包的命令,必须在根目录执行npm install,这样npm会自动处理工作区的依赖关联,把icons-react作为本地链接包安装到icons-site的node_modules中。
内容的提问来源于stack exchange,提问作者Lin Du
相关产品推荐
相关产品推荐

