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

使用Serverless框架开发Node.js Lambda应用遇模块导入错误求助

解决Lambda模块导入错误:"Unable to import module 'api/candidate'"

这个错误我之前开发Serverless应用时也碰到过,本质就是Lambda运行时找不到你指定的api/candidate模块,大概率是文件路径不匹配或者Serverless打包配置出问题了,下面给你一步步的排查和修复方案:

1. 先核对文件结构与Handler配置

首先看你的Serverless.yml里的函数handler配置,比如如果写的是api/candidate.list,那你的项目文件结构必须是这样的:

你的项目根目录/
└── api/
    └── candidate.js  # 这里必须是candidate.js,而且里面导出了list函数

但你提到你的Lambda代码是index.js,那可能是你把handler配置错了?比如实际文件是api/index.js,那handler应该写成api/index.list才对。另外要注意,Lambda运行在Linux环境,文件名是区分大小写的,别犯把Candidate.js写成candidate.js这种低级错误。

2. 检查模块导入语句是否正确

看你的index.js代码里有没有导入api/candidate的语句?如果是同目录下的文件,一定要用相对路径:

// 正确:如果candidate.js和index.js在同一个api目录下
const candidate = require('./candidate');

// 错误:这种写法会去node_modules里找api/candidate模块,而不是本地文件
const candidate = require('api/candidate');

3. 确认Serverless打包的内容是否正确

有时候本地文件没问题,但打包时漏了文件。你可以手动检查部署包:

  • 运行serverless package命令,生成的压缩包在项目根目录的.serverless文件夹里
  • 解压这个zip包,看看里面有没有api/candidate.js(或者对应的index.js),路径是否和你配置的一致

4. 额外排查:AWS SDK依赖问题(概率较低)

虽然你的错误是模块导入,但如果你的代码里用了AWS SDK v3,Lambda默认是不自带的,需要把它打包进部署包。如果是v2的话,Lambda运行时已经自带,不需要在package.json里额外安装。

如果还是解决不了,把你的完整Serverless.yml配置和项目文件结构贴出来,能更快定位问题~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:23:11