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

Docker构建镜像后运行容器报错Cannot find module '/home/backend/dist/src/server.js'求助

问题原因与修复方案

核心问题定位

你遇到的报错本质是容器内的入口文件路径不匹配,同时存在依赖缺失的隐藏问题:

  • 多阶段构建的第二个阶段未显式设置工作目录,使用相对路径复制dist目录时容易出现结构错位,导致最终找不到指定的server.js
  • 仅复制了编译后的dist目录到最终镜像,没有同步复制项目运行需要的生产依赖node_modules,即使路径修正后也大概率会触发依赖缺失报错

修复后的Dockerfile参考

FROM node:14.17.1 as base
WORKDIR /home/backend
# 复制依赖文件
COPY package.json ./
COPY yarn.lock ./
# 仅安装生产依赖,减小镜像体积
RUN yarn install --production

# 复制源码并编译
COPY src ./src
COPY tsconfig.json ./tsconfig.json
RUN yarn build

# 生产镜像阶段
FROM gcr.io/distroless/nodejs:14
WORKDIR /home/backend
# 复制依赖和编译产物
COPY --from=base /home/backend/node_modules ./node_modules
COPY --from=base /home/backend/dist ./dist

# 暴露端口
EXPOSE 5000
# 启动命令,distroless node镜像默认执行node命令,直接传入入口路径即可
CMD [ "dist/src/server.js" ]

可选验证操作

如果调整后依然报错,可以临时将第二阶段的基础镜像替换为node:14.17.1,把CMD修改为["ls", "-al", "/home/backend/dist/src"]后运行容器,就能直接查看对应路径下是否存在server.js,确认是tsconfig编译配置问题还是路径复制问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:48:05