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

Windows使用Docker Desktop运行Node.js Docker镜像报express模块缺失错误

问题原因

错误MODULE_NOT_FOUND: Cannot find module 'express'是由于你的Node.js项目依赖包未安装导致:官方node基础镜像仅提供Node.js运行时和npm工具,不会自动安装你项目package.json中声明的第三方依赖(比如express),你直接执行npm start自然找不到对应的依赖包。

解决方案

方案一:单次运行临时安装依赖

你可以在启动命令里先执行npm install安装依赖,再执行启动命令,修改后的命令如下:

docker run -p 8080:3000 -v C:/tmp/ExpressSite:/var/www -w "/var/www" node sh -c "npm install && npm start"

注意:Windows环境下如果用PowerShell运行上述命令报错,可以把sh -c换成cmd /c,或者直接拆分两步执行:

  1. 先装依赖:docker run -v C:/tmp/ExpressSite:/var/www -w "/var/www" node npm install
  2. 再启动服务:docker run -p 8080:3000 -v C:/tmp/ExpressSite:/var/www -w "/var/www" node npm start

方案二:编写Dockerfile构建自定义镜像(更规范,适合学习Docker的场景)

你可以在ExpressSite目录下新建名为Dockerfile的文件,内容如下:

# 基于官方node镜像
FROM node:16
# 设置工作目录
WORKDIR /var/www
# 拷贝package.json文件提前装依赖(利用Docker缓存提升构建速度)
COPY package*.json ./
RUN npm install
# 拷贝所有项目代码
COPY . .
# 暴露3000端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]

然后在ExpressSite目录下执行构建命令:

docker build -t my-express-app .

构建完成后运行容器即可:

docker run -p 8080:3000 my-express-app

如果需要本地修改代码实时生效,还是可以挂载本地目录覆盖容器内的代码:

docker run -p 8080:3000 -v C:/tmp/ExpressSite:/var/www my-express-app
额外注意事项
  • 每次修改package.json新增依赖后,都需要重新执行npm install或者重新构建Docker镜像
  • Windows挂载目录时要确保Docker Desktop已经开放了C盘的挂载权限,在Docker Desktop设置->Resources->File Sharing里勾选C盘即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:39:00