You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS Amplify托管Lerna Monorepo时无法安装GitHub私有包

AWS Amplify托管Lerna Monorepo时无法加载GitHub私有包问题

在AWS Amplify托管Lerna Monorepo项目时,遇到GitHub私有包无法被构建阶段识别的问题。已在构建设置中添加preBuild阶段创建.npmrc并安装私有包的步骤,但进入build阶段后仍提示找不到对应模块。

重现步骤

  • 为React应用配置Amplify托管为Lerna Monorepo结构
  • 在构建设置中添加创建.npmrc文件并安装私有包的步骤
  • 触发Amplify构建流程

构建设置

version: 1
applications:
  - backend:
      phases:
        build:
          commands:
            - '# Execute Amplify CLI with the helper script'
            - amplifyPush --simple
    frontend:
      phases:
        preBuild:
          commands:
            - yarn install --frozen-lockfile
            - echo -e "always-auth=true
@apptractive:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=$NPM_AUTH_TOKEN" > .npmrc
            - yarn add @apptractive/shared
            - yarn add @apptractive/design-system-web
        build:
          commands:
            - yarn run build
      artifacts:
        baseDirectory: build
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    appRoot: packages/backoffice-app

报错信息

模块未找到错误:无法解析 '@apptractive/shared'
在 '/codebuild/output/src897654321/src/github.com/xxx/packages/backoffice-app/src/components/Layout.tsx' 中


解决思路与方案

1. 调整.npmrc文件位置

当前在appRoot(packages/backoffice-app)目录下创建.npmrc,但Lerna Monorepo的依赖安装通常在根目录执行,导致私有包安装时无法读取到配置。需将.npmrc创建到项目根目录:
修改preBuild中的创建命令:

- echo -e "always-auth=true\n@apptractive:registry=https://npm.pkg.github.com/\n//npm.pkg.github.com/:_authToken=$NPM_AUTH_TOKEN" > ../.npmrc

2. 调整依赖安装顺序

先执行yarn install --frozen-lockfile时还没有.npmrc,私有包无法被正确拉取。应先创建.npmrc再执行全局依赖安装:

preBuild:
  commands:
    - echo -e "always-auth=true\n@apptractive:registry=https://npm.pkg.github.com/\n//npm.pkg.github.com/:_authToken=$NPM_AUTH_TOKEN" > .npmrc
    - yarn install --frozen-lockfile
    - yarn add @apptractive/shared
    - yarn add @apptractive/design-system-web

3. 修复Lerna依赖链路

Monorepo中子项目需要正确链接私有包,可在preBuild阶段添加Lerna bootstrap命令:

- npx lerna bootstrap --scope @apptractive/backoffice-app

4. 清理缓存

Amplify缓存可能保留旧依赖状态,可在Amplify控制台触发一次无缓存构建,或在构建设置中添加缓存清理命令:

- rm -rf node_modules
- rm yarn.lock

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 11:03:15