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

Github Actions构建CDK栈时AppSync resolver fromAsset找不到文件

解决GitHub Actions中CDK Appsync Code.fromAsset找不到文件的问题

可能的原因及对应解决方案:

  • 构建脚本未复制Resolver代码到输出目录
    若用TypeScript编译项目,默认仅会将.ts文件编译到lib目录,Resolver的.js文件不会自动复制。本地开发时lib目录可能保留了手动复制的文件,但CI环境重新构建后会缺失。
    解决:修改package.json的构建脚本,添加静态文件复制步骤。例如:

    "scripts": {
      "build": "tsc && cp -r src/graphql/*.js lib/graphql/"
    }
    

    或使用copyfiles工具(需先安装npm install copyfiles --save-dev):

    "scripts": {
      "build": "tsc && copyfiles -u 1 src/graphql/*.js lib/"
    }
    
  • 路径大小写不匹配
    GitHub Actions基于Linux环境,文件名大小写敏感。若本地是Windows/macOS(默认大小写不敏感),代码中路径的大小写与实际文件名不一致时,本地能正常找到文件,但CI环境会失败。
    解决:确保代码中fromAsset的路径与实际文件名大小写完全一致,比如putProduct.js和代码中的路径完全匹配。

  • 相对路径基准错误
    CDK的fromAsset以执行cdk命令时的工作目录作为相对基准,而非代码文件所在目录。若CDK入口文件在bin/目录,在项目根目录执行命令时,相对路径可能出现偏差。
    解决:使用Node.js的path模块生成基于代码文件的绝对路径,避免基准错误:

    const path = require('path');
    
    // 在Resolver定义中替换路径
    code: appsync.Code.fromAsset(path.join(__dirname, 'graphql/putProduct.js')),
    

    这里__dirname代表当前代码文件所在的目录,确保路径解析准确。

  • CI环境文件缺失验证
    可在GitHub Actions步骤中添加调试命令,确认文件是否存在于预期路径:
    解决:在CDK部署前添加检查步骤:

    - name: Verify resolver file exists
      run: ls -la lib/graphql/
    

    若文件不存在,回到第一个方案检查构建脚本的复制逻辑;若存在,再排查路径解析或权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:19:57