通过CDK部署的Lambda提示找不到index模块问题求助
Lambda "Cannot find module 'index'" 排查思路
核对Lambda运行时与处理程序配置
确认Lambda运行时和你的代码环境匹配(比如Node.js 18.x/20.x),重点检查处理程序设置:必须是index.handler(文件名加导出的处理程序名,用点分隔)。如果配置成index或其他错误格式,必然触发找不到模块的报错。验证S3压缩包的结构
下载S3中的users.zip,解压后确认:index.js确实在压缩包根目录,不是嵌套在子文件夹(比如users/index.js这种结构会让Lambda找不到文件)。- 压缩包内没有多余干扰文件(比如Mac系统的
__MACOSX隐藏文件夹)。
检查CDK代码的Lambda配置
确认CDK定义Lambda的代码中,handler和code配置准确:// 示例CDK代码,重点核对以下字段 const lambdaFn = new lambda.Function(this, 'UserLambda', { runtime: lambda.Runtime.NODEJS_20_X, handler: 'index.handler', // 必须是"文件名.处理程序名"格式 code: lambda.Code.fromBucket(Bucket.fromBucketName(this, 'UserBucket', '你的桶名'), 'users.zip'), });确保
handler字段没有写错,同时S3桶名和文件路径完全正确。确认Lambda执行角色权限
检查Lambda的执行角色是否有S3桶的GetObject权限,如果权限不足,Lambda无法正确下载解压代码包,也会导致文件找不到。可以通过CDK直接添加权限:bucket.grantRead(lambdaFn);查看Lambda实际部署包内容
在Lambda控制台的「代码」标签页,点击「下载部署包」,解压后检查文件结构是否符合预期。如果下载的包结构不对,说明CDK部署或S3上传过程出了问题,需要重新上传正确的压缩包到S3,再重新部署CDK。检查依赖模块(如果有)
如果index.js依赖其他npm包,确认这些包已经打包到压缩包的node_modules根目录下。不过当前报错直接指向index,优先排查前面的点。
内容的提问来源于stack exchange,提问作者user3052526
相关产品推荐
相关产品推荐

