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

使用Serverless Framework部署AWS Lambda后出现Runtime.ImportModuleError:找不到模块'lambda'

Serverless Framework部署AWS Lambda后出现Runtime.ImportModuleError:找不到模块'lambda'

兄弟,这种问题我之前部署Lambda的时候也踩过坑,别慌,咱们从最可能的原因开始一步步排查解决:

1. 先检查Serverless配置文件的handler字段

这是最常见的问题!AWS Lambda通过serverless.yml里的handler字段找到你的代码入口,如果这个配置写错了,就会触发找不到模块的错误。

举个例子,错误的配置可能是这样的(直接写了lambda,没有指定正确的文件+函数名):

functions:
  myFunction:
    handler: lambda  # ❌ 这里错误,必须是「文件路径.导出的函数名」格式

正确的配置应该指向你的处理函数文件和导出的函数名,比如你的处理函数在src/handler.js里,导出的函数叫main,那配置应该是:

functions:
  myFunction:
    handler: src/handler.main  # ✅ 正确格式:[相对路径].[函数名]

2. 检查代码里的引入语句

有没有可能你在代码里手误写了require('lambda')或者import from 'lambda'?这种写法会让Lambda运行时去npm包仓库找名为lambda的模块,而不是你自己的本地文件。

如果是要引入自己的本地文件,记得加相对路径,比如:

// 错误写法
const myModule = require('lambda');

// 正确写法(假设lambda.js和当前文件同目录)
const myModule = require('./lambda');

3. 排查打包工具的问题(如果用了Webpack等)

如果你用了Serverless Webpack插件来打包代码,要注意两个点:

  • 检查webpack配置里的入口文件是否正确指向你的处理函数
  • 打包完成后,serverless.yml里的handler要指向打包后的输出文件路径,比如打包后文件在dist/handler.js,那配置应该是dist/handler.main

4. 确认文件结构和文件名大小写

Lambda运行在Linux环境下,文件名是区分大小写的!比如你配置里写的是src/Handler.js,但实际文件是src/handler.js,这也会导致找不到文件的问题。

建议你手动核对:配置里的文件路径对应的文件是否存在,文件名大小写是否完全一致。

举个正确的示例参考

serverless.yml 片段

service: my-demo-service

provider:
  name: aws
  runtime: nodejs18.x  # 确保和你的Node.js版本一致

functions:
  helloWorld:
    handler: src/handler.helloWorld  # 路径+函数名
    events:
      - httpApi:
          path: /hello
          method: get

src/handler.js 文件

exports.helloWorld = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: "部署成功啦!"
    })
  };
};

按照上面的步骤排查,应该能解决这个问题~

备注:内容来源于stack exchange,提问作者codeinprogress

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 07:45:30