В верхней части моего компонента реагирования ( Coffee.jsx ) у меня есть этот импорт:
import ReactPlayer from 'react-player';
Пакет «реакция-игрок», безусловно, установлен, присутствует на package.json
и node_modules/
.
Мой код работает внутри контейнера docker
. Каждый раз, когда я раскручиваю свои контейнеры, вот так:
docker-compose -f docker-compose-dev.yml up -d
Я получаю эту ошибку:
./src/components/Coffees.jsx
Module not found: Can't resolve 'react-player' in '/usr/src/app/src/components'
это то, что консоль показывает мне:
Brewing.jsx:22 Uncaught Error: Cannot find module 'react-player'
at webpackMissingModule (Brewing.jsx:22)
at Module../src/components/Coffees.jsx (Brewing.jsx:22)
at __webpack_require__ (bootstrap:781)
at fn (bootstrap:149)
at Module../src/App.jsx (Spotify.css:4)
at __webpack_require__ (bootstrap:781)
at fn (bootstrap:149)
at Module../src/index.js (spotify-auth.js:8)
at __webpack_require__ (bootstrap:781)
at fn (bootstrap:149)
at Object.0 (index.js:10)
at __webpack_require__ (bootstrap:781)
at checkDeferredModules (bootstrap:45)
at Array.webpackJsonpCallback [as push] (bootstrap:32)
at main.chunk.js:1
docker-compose-dev.yml :
client:
build:
context: ./services/client
dockerfile: Dockerfile-dev
volumes:
- './services/client:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- 3000:3000
environment:
- NODE_ENV=development
- REACT_APP_WEB_SERVICE_URL=${REACT_APP_WEB_SERVICE_URL}
depends_on:
- web
Dockerfile-dev :
# base image
FROM node:11.12.0-alpine
# set working directory
WORKDIR /usr/src/app
# add `/usr/src/app/node_modules/.bin` to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH
# install and cache app dependencies
COPY package.json /usr/src/app/package.json
COPY package-lock.json /usr/src/app/package-lock.json
RUN npm ci
RUN npm install react-scripts@2.1.8 -g --silent
# start app
CMD ["npm", "start"]
структура папок:
services/
docker-compose-dev.yml
node_modules/
client/
Dockerfile-dev
package.json
package-lock.json
node_modules/
react-player/
Временное исправление:
Хак, исправляющий это, ждет некоторое время, наряду с некоторыми принудительными изменениями в моем коде либо в Coffee.jsx или Brewing.jsx .
После сохранения измененного кода пакет найден.
Затем, когда я останавливаю контейнеры и снова их поднимаю, проблема возобновляется. Я пытаюсь использовать флаг --build
после up -d
, но безрезультатно.
Что происходит? Как это исправить?
более постоянное исправление:
После удаления томов из docker-compose-dev.yml и перестройки, вот так:
#volumes:
#- './services/client:/usr/src/app'
#- '/usr/src/app/node_modules'
Я все еще получаю сообщение об ошибке:
client_1 | > client@0.1.0 start /usr/src/app
client_1 | > react-scripts start
client_1 |
client_1 | Could not find a required file.
client_1 | Name: index.html
client_1 | Searched in: /usr/src/app/public
client_1 | npm ERR! code ELIFECYCLE
client_1 | npm ERR! errno 1
client_1 | npm ERR! client@0.1.0 start: `react-scripts start`
client_1 | npm ERR! Exit status 1
client_1 | npm ERR!
client_1 | npm ERR! Failed at the client@0.1.0 start script.
client_1 | npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
client_1 |
client_1 | npm ERR! A complete log of this run can be found in:
client_1 | npm ERR! /root/.npm/_logs/2019-11-05T15_14_42_967Z-debug.log
Тогда это работает, только если я снова раскомментирую тома и запускаю контейнеры с томами. Ответ с объяснением причин
a) временного исправления b) более постоянного исправления
был бы очень признателен.