You need to enable JavaScript to run this app. 基于yarn workspaces和lerna的monorepo中Github Actions找不到私有包如何解决
优惠活动
大模型
产品
解决方案
定价
更多

基于yarn workspaces和lerna的monorepo中Github Actions找不到私有包如何解决

问题根因

该报错核心原因是CI环境中DTO包未提前构建,导致依赖它的服务端包编译时无法找到对应模块。
本地执行正常是因为你之前大概率已经在本地执行过build命令,DTO包的dist目录下存在编译后的产物。而Github Actions运行环境是全新初始化的,拉取代码后DTO包的dist目录为空,直接执行deploy命令不会触发DTO包的构建逻辑。
只有第一个serverless包执行成功是因为lerna默认按包名字母排序执行任务,且默认开启并行执行,第一个包刚好命中了前置流程的缓存,或是刚好在执行时私有npm源上已有对应版本的DTO包。


解决方案

  1. 新增全量构建步骤
    在Deploy-to-AWS Job的安装依赖步骤后,新增全量包构建步骤,保证DTO包优先完成构建:
- name: Build all packages
  run: yarn build

根目录的yarn build会触发lerna按照依赖拓扑顺序执行所有包的build脚本,自动优先构建DTO包,再构建所有依赖它的子包,确保子包编译时能拿到DTO的编译产物。
2. (可选)调整lerna执行规则
如果并行部署serverless包仍然出现异常,可以修改根目录package.json的deploy脚本,强制lerna按依赖顺序串行执行,避免并行冲突:

"deploy": "lerna run deploy --sort --concurrency 1"
  1. 检查DTO包配置
    确认DTO包的package.json中入口和类型声明配置正确,指向dist目录下的对应文件:
{
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "files": ["dist"]
}

内容的提问来源于stack exchange,提问作者mecograph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 11:51:02