Как написать отсутствующий сценарий разработки в React?

#reactjs #npm

#reactjs #npm

Вопрос:

Когда я запускаю docker-compose up в своем проекте, серверная часть работает нормально, но интерфейс выходит из строя и продолжает перезапускаться. В нем указано «ОШИБКА npm! отсутствует сценарий: dev» как ошибка. Теперь я использую react, и dev не является одним из сценариев по умолчанию при создании приложения, поэтому я не уверен, как его написать. Это мой файл package.json.

 {
"name": "frontend",
"version": "0.3.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.3",
"@testing-library/user-event": "^12.6.0",
"bootstrap": "^4.5.3",
"react": "^17.0.1",
"react-bootstrap": "^1.4.3",
"react-dom": "^17.0.1",
"react-scripts": "4.0.1",
"web-vitals": "^0.2.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --passWithNoTests",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
  "react-app",
  "react-app/jest"
]
},
"browserslist": {
"production": [
  ">0.2%",
  "not dead",
  "not op_mini all"
],
"development": [
  "last 1 chrome version",
  "last 1 firefox version",
  "last 1 safari version"
]
}
}
 

Я решил, что напишу его так же, как и все остальные, поэтому я написал «dev»: «react-scripts dev», но это не сработало.

docker-compose.yml файл ниже

 version: '2.4'

services:
  frontend:
    build:
      context: ./frontend
  ports:
    - "8050:8000"
  volumes:
    - .:/frontend
  environment:
    CI: 'true'
  restart: always
backend:
  build:
    context: ./backend
  ports:
    - "4050:5000"
  volumes:
    - ./backend:/opt/app
  restart: always
 

интерфейс Dockerfile

 FROM node:latest
COPY . /opt/app
WORKDIR /opt/app
CMD ["npm", "run", "start"]
 

Комментарии:

1. Можете ли вы добавить свой docker-compose.yml и любой Dockerfile, который вы использовали для своего react.js приложение? Я подозреваю, что изменение в Dockerfile — самый простой способ достичь того, что вы ищете….

2. react-scripts start запускает сервер разработки. "dev": "react-scripts start"

3. Добавлены файлы @JayAchar

4. Должен ли это заменить сценарий «start» или просто добавить его в конец? @cbr

5. @Jaakko Файл dockerfile вашего интерфейса выглядит нормально, и он использует start скрипт. Раньше у вас CMD ["npm", "run", "dev"] там было? Если это так, сделайте docker-compose build frontend , чтобы перестроить изображение и docker-compose up -d снова. Если он все еще жалуется на отсутствие dev , вы уверены, что ошибка исходит из контейнера внешнего интерфейса, а не из внутреннего контейнера?