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

如何在Lambda函数中将文件夹作为模块引入?Serverless项目模块报错求助

在AWS Lambda中添加自定义本地模块的解决办法

我来帮你解决这个Lambda找不到自定义模块的问题!你遇到的Cannot find module 'report'错误,大多是因为目录结构不对或者打包部署时没把report文件夹包含进去,咱们一步步来排查解决:

第一步:确认目录结构与模块入口

首先检查你的项目目录结构是否符合Node.js的模块加载规则:

你的Serverless项目根目录/
├─ handler.js
└─ report/
   └─ index.js  # Node.js默认会加载文件夹里的index.js作为模块入口

如果report文件夹里的入口文件不是index.js,你需要在require时明确指定文件名,比如:

const report = require('./report/你的入口文件名.js');

第二步:确保打包部署时包含report文件夹

这是最容易踩坑的地方,Lambda执行环境需要能访问到同目录下的report文件夹,所以打包时必须把它包含进去:

如果你用Serverless Framework部署

打开项目根目录的serverless.yml,检查package配置,确保没有把report文件夹加入exclude列表:

package:
  exclude:
    - node_modules/**
    - .git/**
    - README.md
    # 注意:不要出现 - report/** 这类排除该文件夹的配置

如果你手动打包上传

直接选中handler.js和整个report文件夹,一起压缩成zip包,不要只单独压缩handler.js上传。Lambda解压后,handler.js和report文件夹必须在同一层级目录下。

第三步:本地验证模块加载是否正常

先在本地测试模块能否正常加载,排除代码本身的问题。在项目根目录执行以下命令:

node -e "const report = require('./report'); console.log('模块加载成功!')"

如果本地执行报错,先解决本地的路径或文件问题,再部署到Lambda;如果本地正常,那大概率是打包部署时的问题,回到第二步检查配置。

按这几步操作下来,应该就能解决Lambda找不到report模块的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:01:34