按照AWS教程创建AppSync操作Lambda Layer时遇Babel编译问题
问题排查:AppSync操作导出Lambda Layer时Babel未编译文件
可能的原因及解决步骤
1. 先确认amplify codegen是否生成了源文件
单独执行amplify codegen,去src/graphql目录下查看是否存在mutations.js、queries.js、subscriptions.js这几个文件。如果没有:
- 运行
amplify status确认Amplify项目已正确关联AppSync API,且API状态正常 - 检查
amplify/backend/api/<api-name>/schema.graphql中是否定义了查询、变更、订阅操作——没有这些定义的话,codegen不会生成对应文件
2. 修复Babel命令的路径匹配问题
即使源文件存在,Babel也可能因匹配规则问题找不到文件:
- 直接指定文件扩展名修改命令:
或者用babel src/graphql/*.js --config-file ./babel.config.json -d ./amplify/backend/function/my_function_name/opt/graphql/--extensions参数明确要处理的文件类型:babel src/graphql --config-file ./babel.config.json --extensions ".js" -d ./amplify/backend/function/my_function_name/opt/graphql/ - 注意:如果项目使用TypeScript,
amplify codegen可能生成.ts文件,此时需调整Babel命令处理.ts,或在codegen配置中指定生成JS文件
3. 检查Babel配置是否有效
打开babel.config.json确认配置正确,需包含适配Lambda运行环境的预设,示例基础配置:
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "18" // 对应你Lambda使用的Node.js版本 } }] ] }
配置错误会导致Babel跳过文件处理。
4. 确认目标路径的正确性
- 先手动创建目标目录:
mkdir -p ./amplify/backend/function/my_function_name/opt/graphql/——部分Babel版本不会自动创建不存在的目录 - 核对
my_function_name与实际Lambda Layer函数名完全一致,大小写、拼写均不能出错
关于教程完成情况
我之前成功完成过这个教程,核心是确保amplify codegen能正确生成源文件,同时Babel能匹配并编译这些文件到目标目录。
内容的提问来源于stack exchange,提问作者rleffler
相关产品推荐
相关产品推荐

