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

AWS Lambda部署函数报错:无法找到handler模块求助

AWS Lambda Handler 找不到模块问题排查与解决

问题描述

通过AWS Lambda界面部署函数,未使用serverless.yml或CLI工具,Handler设置为functions/fetchNest/handler.fetch,触发报错:

错误信息

"errorType": "Runtime.ImportModuleError",
    "errorMessage": "Error: Cannot find module 'handler'\nRequire stack:\n- /var/runtime/index.mjs",
    "stack": [
        "Runtime.ImportModuleError: Error: Cannot find module 'handler'",
        "Require stack:",
        "- /var/runtime/index.mjs",
        "    at _loadUserApp (file:///var/runtime/index.mjs:951:17)",
        "    at async Object.UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:976:21)",
        "    at async start (file:///var/runtime/index.mjs:1137:23)",
        "    at async file:///var/runtime/index.mjs:1143:1"
    ]

相关代码(handler.js)

module.exports.fetch = async event => {

  // Get SSM creds.
}

文件夹结构

Lambda文件夹结构

排查与解决步骤

  1. 修正Handler路径与打包层级匹配
    AWS Lambda的Handler路径是基于部署包根目录的相对路径,格式为[文件路径不带.js后缀].[导出函数名]。错误核心是打包层级和Handler设置不匹配:

    • 如果你的部署包根目录直接包含functions/fetchNest/handler.js,那functions/fetchNest/handler.fetch是正确的;
    • 如果打包时把fetchNest文件夹里的内容作为根目录,那Handler要改成handler.fetch。

    最常见的错误是打包时包含了多余的上层目录,比如本地是项目根/functions/fetchNest/handler.js,却把项目根整个打包上传,导致Lambda找不到functions/fetchNest/handler(实际路径变成了项目根/functions/fetchNest/handler)。

  2. 检查部署包结构
    本地解压你上传的ZIP包,确认从包的根目录能直接找到对应路径的handler.js。比如用functions/fetchNest/handler.fetch作为Handler的话,解压后必须能看到functions文件夹,里面嵌套fetchNest和handler.js。

  3. 确认Runtime设置
    确保Lambda函数的Runtime选择的是Node.js版本,你的代码用了CommonJS格式(module.exports),选其他Runtime(比如Python)必然会报错。

  4. 快速修复方案
    进入本地functions/fetchNest文件夹,把该文件夹下的所有文件打包成ZIP,上传到Lambda后将Handler设置为handler.fetch,这样Lambda能直接从根目录找到handler.js并加载fetch函数。

内容的提问来源于stack exchange,提问作者Lucas.Pheliny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:01:02