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

AWS Lambda Node.js项目源文件移入子文件夹报Cannot Find Module错误如何解决

问题原因

你将JS文件移入子文件夹后,Lambda的执行入口配置、代码内的相对路径引用没有同步调整,导致找不到模块和配置文件。

具体修改步骤

  • 第一步:修改CloudFormation模板中对应函数的Handler参数
    原来的Handler配置是role-getall.getAllRoles,是相对于CodeUri根目录查找入口文件,现在文件移入role子文件夹,需要加上子目录路径,修改为:
    Handler: role/role-getall.getAllRoles
    
    规则是:[相对于CodeUri的目录路径]/[入口文件名不带后缀].[导出的函数名]
  • 第二步:修改Lambda函数内的配置文件读取路径
    你原来用相对路径properties.properties读取配置,函数移入子目录后,相对路径的基准目录变成了函数所在的role文件夹,找不到根目录下的配置文件,需要用__dirname拼接绝对路径:
    把原来的代码:
    const prop = PropertiesReader('properties.properties');
    
    修改为:
    const prop = PropertiesReader(`${__dirname}/../properties.properties`);
    
    其中../代表向上退一级到CodeUri根目录,如果你把配置文件也移动到其他目录,调整对应的相对路径即可。
  • 第三步:确认目录结构合规
    确保你的node_modules、properties.properties都放在CodeUri指定的根目录(也就是你配置的aaaaa-restapi/目录下),所有子目录的Lambda函数都会自动从根目录加载依赖,不需要每个子目录单独安装npm包。

修改完成后重新部署SAM模板即可正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 07:54:03