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

基于Docker镜像的AWS Lambda函数出现模块找不到错误求助

问题分析与解决方案

核心问题定位

错误提示Cannot find module 'liveiq'并非来自handler.js中的require('./src/liveiq.js'),而是**src/liveiq.js内部存在错误的模块引用**,或者对应依赖包未正确安装。

具体排查与修复步骤

1. 检查src/liveiq.js内部的引用写法

打开src/liveiq.js,查找是否存在类似:

require('liveiq')

的代码:

  • 如果是引用同目录下的本地模块,必须使用相对路径,比如:
    // 引用同目录下的xxx.js
    require('./xxx.js')
    // 引用上级目录的模块
    require('../xxx.js')
    
  • 如果liveiq是第三方npm包,确认package.json的dependencies中已添加该包,且依赖安装步骤无遗漏。

2. 修正Dockerfile的依赖安装逻辑

当前Dockerfile的依赖安装步骤存在冗余,建议修改为:

FROM public.ecr.aws/lambda/nodejs:18

# Install system dependencies
RUN yum install -y \
    fontconfig \
    freetype \
    git \
    bzip2 \
    && yum clean all \
    && rm -rf /var/cache/yum

# Copy package files to Lambda's working directory (/var/task)
COPY package*.json ./

# Install all production dependencies
RUN npm install --production

# Copy application code
COPY ./src ./src
COPY ./handler.js ./handler.js

# Set Lambda handler
CMD ["handler.handler"]
  • 使用npm install --production确保只安装生产依赖,避免不必要的包
  • 基础镜像public.ecr.aws/lambda/nodejs:18的默认工作目录就是/var/task,无需额外指定

3. 验证镜像内的文件结构

拉取ECR镜像后,本地运行容器检查文件是否正确放置:

docker run -it --entrypoint /bin/bash <your-ecr-image-uri>
# 进入容器后执行
ls -la /var/task/
# 确认存在src/liveiq.js,以及node_modules(如果有第三方依赖)

4. 额外排查点

  • 确认src/liveiq.js的文件名拼写完全正确(Linux环境下区分大小写)
  • 检查Lambda函数配置:是否正确指定handler.handler作为入口,未随意修改工作目录

内容的提问来源于stack exchange,提问作者Guillaume Des Rosiers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:33:18