React.js Docker-找不到模块



先决条件

Linux18.04

创建react应用2.0

码头工人19.09.0

Dockerfile

# base image
FROM node:9.6.1
# set working directory
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
ADD package.json /package.json
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
RUN npm install --save --silent
RUN npm install react-scripts@latest -g --silent
# start app
CMD ["npm", "start"]

docker-compose.yml

version: '3.5'
services:
provisioning-app:
container_name: prv-app
build:
context: .
dockerfile: Dockerfile
volumes:
- '.:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- '3000:3000'
environment:
- NODE_ENV=development

问题

一切都很好,但在安装了一个新的软件包后,docker就按预期停止了工作。每次运行docker-compose up时,它都会失败,并出现"找不到模块"错误。而npm start工作得非常好。我已经尝试了很多在网上找到的解决方法:

  • 重新启动电脑
  • 删除node_modules文件夹并再次运行npm i
  • npm install/--save/including的不同组合——保存在Dockerfile中

它就是不起作用,我自己也无法处理。你知道为什么会发生这种事吗?

更新

奇怪的是,但是这个代码是有效的。我是Docker的新手,所以我不知道有什么不同

docker run -it 
-v ${PWD}:/usr/src/app 
-v /usr/src/app/node_modules 
-p 3000:3000 
--rm 
prov-app

一切都很好,但在安装了新的packagedocker按预期停止工作。每次我跑步docker组合失败,出现"找不到模块"错误。

您需要重新生成映像才能安装该程序包。docker-compose build,然后是docker-compose up

编辑

根据您的更新,我意识到问题是您的旧node_module卷在构建之间持续存在。在up之前尝试docker-compose down -v

代替:

volumes:
- '.:/usr/src/app'
- '/usr/src/app/node_modules'

尝试:

volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules

最新更新