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

Docker启动Express后端容器报MODULE_NOT_FOUND错误如何解决

问题根因与修复方案

核心错误原因

你遇到这个报错的核心原因是Docker基础镜像选型完全错误:

  • 你当前Dockerfile第一行用的mongo-express是已经封装好的MongoDB Web可视化管理工具镜像,不是通用Node.js运行时镜像。该镜像自带固定的ENTRYPOINT启动逻辑,默认会执行node /usr/src/app/app启动它自己的管理服务,你在Dockerfile里写的CMD [ "node", "server.js" ]没有覆盖它内置的ENTRYPOINT配置,根本不会生效。
  • 你构建镜像时把自己的项目代码拷贝到工作目录后,覆盖了mongo-express原本自带的app入口文件,容器启动时走原有逻辑找不到app文件,就抛出了Cannot find module '/usr/src/app/app'的错误。
  • 额外说明:你删除本地node_modules重新安装的操作完全无效,容器内的依赖是构建阶段在镜像内部独立安装的,和宿主机本地的依赖目录没有关系。

分步修复操作

  • 替换基础镜像
    修改后端Dockerfile的第一行,把FROM mongo-express换成官方Node.js运行时镜像,推荐使用稳定LTS版本的轻量化镜像:
    FROM node:18-alpine
    
    如果你需要匹配本地Node版本,把18换成你本地对应的大版本号即可。
  • 使用修正后的Dockerfile配置
    完整可用配置参考如下,你原来的Dockerfile除了基础镜像错误之外,其余逻辑本身是正确的:
    # 使用官方Node.js LTS轻量化基础镜像
    FROM node:18-alpine
    
    # 设置应用工作目录
    WORKDIR /usr/src/app
    
    # 先拷贝依赖配置文件,利用Docker缓存机制,依赖不变时无需重复安装
    COPY package*.json ./
    
    # 安装项目依赖,生产环境可追加--only=production参数跳过开发依赖
    RUN npm install
    
    # 拷贝项目所有源码到工作目录
    COPY . .
    
    # 暴露服务监听端口
    EXPOSE 8080
    
    # 启动Express服务
    CMD [ "node", "server.js" ]
    
  • 强制重新构建镜像,跳过旧缓存
    改完Dockerfile后不要直接执行docker-compose up,Docker默认会复用之前构建的错误镜像缓存,需要执行以下命令强制重建:
    # 停止并删除现有错误容器
    docker-compose down
    # 不使用缓存重新构建后端服务镜像,把backend换成你docker-compose.yml里定义的后端服务名
    docker-compose build --no-cache backend
    # 启动所有服务
    docker-compose up -d
    
  • 兜底排查项(上述操作后仍报错再检查)
    • 检查项目根目录的.dockerignore文件,确认没有配置规则把server.js、package.json等源码文件排除,否则COPY步骤不会把这些文件打进镜像。
    • 检查docker-compose.yml里后端服务的配置块,确认没有自定义command、entrypoint字段覆盖Dockerfile里定义的启动命令。
    • 可以执行以下命令进入运行中的容器,检查工作目录下的文件是否完整:
      docker exec -it 你的后端容器名 sh
      # 进入容器后执行ls查看文件列表,确认server.js存在
      ls /usr/src/app
      

所有配置修正并重新构建后,容器日志会正常打印Running on http://0.0.0.0:8080,服务可以正常访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:15:58