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

基于node-alpine构建AWS Lambda Node.js镜像时报MODULE_NOT_FOUND错误

问题原因

你遇到的报错由两个核心配置错误导致:

  1. 未显式配置Lambda运行时入口:AWS官方基础镜像默认内置了aws-lambda-ric的ENTRYPOINT配置,但你使用的纯净node:14-alpine镜像没有该配置,导致CMD ["main.handler"]被系统当成可执行文件直接执行,而不是作为handler参数传给Lambda运行时客户端。
  2. 编译产物复制规则错误:你当前的COPY命令会将src目录本身复制到工作目录,导致编译后的main.js路径为/function/src/main.js,与main.handler预期的/function/main.js路径不匹配。
修复步骤

1. 修正COPY规则

将生产阶段的编译产物COPY语句修改为直接复制dist/src目录下的文件到工作目录:

# 原错误写法
# COPY --from=builder ${FUNCTION_DIR}/dist/src* ${FUNCTION_DIR}
# 修正后写法
COPY --from=builder ${FUNCTION_DIR}/dist/src/ ${FUNCTION_DIR}/

如果你的tsconfig配置中编译产物直接输出在dist根目录,去掉路径中的src即可。

2. 添加ENTRYPOINT配置

在生产阶段的CMD语句前显式指定Lambda运行时入口:

ENTRYPOINT ["npx", "aws-lambda-ric"]

3. 可选验证

构建完成后可运行以下命令确认文件路径符合预期:

docker run --rm --entrypoint ls lambda-test:latest -la /function

确认输出中存在main.js文件即可。

修改后生产阶段完整参考配置
#*****************************************************************************
#  Production Stage
#****************************************************************************/
FROM node:14-alpine

# Include global arg in this stage of the build
ARG FUNCTION_DIR

WORKDIR ${FUNCTION_DIR}

RUN mkdir -p /opt/extensions

COPY --from=builder ${FUNCTION_DIR}/node_modules ${FUNCTION_DIR}/node_modules
COPY --from=builder ${FUNCTION_DIR}/package*.json ${FUNCTION_DIR}
COPY --from=builder ${FUNCTION_DIR}/dist/src/ ${FUNCTION_DIR}/

ENTRYPOINT ["npx", "aws-lambda-ric"]
CMD [ "main.handler" ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:09