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

Github Actions执行Amplify项目单元测试时找不到aws-exports模块

解决GitHub Actions中Amplify项目单元测试缺失aws-exports的问题

核心原因

aws-exports.js是Amplify构建阶段动态生成的配置文件,PR测试流程里没走Amplify构建,自然找不到这个文件。下面是几个实用的正式解决方案:

方案1:测试前自动生成模拟配置文件(轻量化首选)

不用依赖AWS权限,直接给测试环境生成一个仅包含必要配置的模拟文件,避免手动维护多环境模板的麻烦。

操作步骤:

  1. 在项目根目录新建aws-exports.mock.js,只保留测试需要的基础配置:
export default {
  aws_project_region: 'us-east-1',
  // 按需添加测试用到的其他配置,比如API端点、Auth基础配置等
};
  1. 修改你的GitHub Action配置,在测试前复制模板到对应路径:
name: Node CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: yarn install
    # 新增步骤:把模拟文件复制到代码import的路径下
    - run: cp aws-exports.mock.js src/aws-exports.js
    - run: yarn test

注意:根据你项目的实际目录结构调整文件路径,确保和代码中import awsconfig from 'aws-exports'的路径匹配

方案2:用Amplify CLI在CI环境生成真实配置

如果测试需要用到真实的Amplify环境配置,可以通过CLI在CI流程里拉取配置生成文件,但需要配置AWS权限。

操作步骤:

  1. 在GitHub仓库的Secrets里添加AWS访问密钥(AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY),该账号需要有对应Amplify项目的访问权限。
  2. 修改GitHub Action配置,安装Amplify CLI并拉取环境配置:
name: Node CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    # 全局安装Amplify CLI
    - run: npm install -g @aws-amplify/cli
    # 配置AWS凭证
    - run: amplify configure --accessKeyId ${{ secrets.AWS_ACCESS_KEY_ID }} --secretAccessKey ${{ secrets.AWS_SECRET_ACCESS_KEY }} --region us-east-1
    # 拉取指定Amplify环境的配置并生成aws-exports
    - run: amplify pull --appId 你的Amplify项目ID --envName staging --yes
    - run: yarn install
    - run: yarn test

注意:替换你的Amplify项目ID和envName为你实际的项目ID和测试环境名称

方案3:在测试框架中mock模块(单元测试推荐)

如果是单元测试,完全可以在测试框架(比如Jest)里直接mockaws-exports模块,不需要生成物理文件,更符合单元测试的隔离原则。

示例(Jest配置):

在项目根目录的jest.config.js中添加:

module.exports = {
  // 其他已有配置
  moduleNameMapper: {
    'aws-exports': '<rootDir>/__mocks__/aws-exports.js',
  },
};

然后在__mocks__/aws-exports.js里编写模拟配置:

export default {
  // 测试需要的配置项
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:50:20