Изучая проблемы в этом репозитории, кажется, что некоторые из участников знакомы с использованием докера, поэтому, возможно, кто-то может мне немного помочь. Я пытаюсь настроить рабочий процесс разработки с помощью докера и иметь возможность реагировать на hmr внутри контейнера докера. Цель состоит в том, чтобы получить работающее решение без особого взлома базового проекта razzle-create-app. Я создал свой файл докеров следующим образом:
FROM node:6
WORKDIR /home/node/app
EXPOSE 3000
EXPOSE 3001
CMD ["npm", "start"]
затем я запускаю контейнер с каталогом dev, смонтированным как том с
docker run --name hmr-test -d -p 8080:3000 -p 3001:3001 -v C:\Users\charles\Desktop\docker-hmr-test\ui-service:/home/node/app docker-hmr
Приложение запускается и отображается правильно, но razzle не улавливает никаких изменений, внесенных в локальную файловую систему. Если я запускаю bash в контейнере и просматриваю файлы, я вижу, что они обновляются правильно, и razzle запускается из правильного каталога в контейнере, так почему же razzle не распознает файлы и не перестраивает?
Эта проблема связана с известной проблемой, работающей в докере. Запуск контейнера из среды Windows не передает события файла в контейнер Docker с собственной функциональностью. Текущий обходной путь, пока не реализована собственная функциональность, заключается в использовании опроса веб-пакета в контейнере докера, чтобы позволить веб-пакету опрашивать изменения файловой системы. Поэтому вам нужно добавить это в файл razzle.config.js, чтобы hmr мог видеть обновления:
if(config.devServer){
config.devServer.watchOptions['poll'] = 1000;
config.devServer.watchOptions['aggregateTimeout'] = 300;
}
@jaredpalmer Если это то, для чего вы хотели бы создать ветку функций, я мог бы придумать что-нибудь для PR. Просто дай мне знать. Спасибо за создание этого замечательного набора для начинающих.
@alexjoyner святой моли. Спасибо, что разобрались. Я не специалист по javascript, так что это мне очень помогло.
конфиг у меня не работал. похоже, что он обновляется, но не отображается в браузере.
следующий журнал показывает запуск и изменение файла.
0|razzle |
0|razzle | > [email protected] start /app/razzle/razzle
0|razzle | > razzle start
0|razzle |
0|razzle | WAIT Compiling...
0|razzle |
0|razzle | ℹ Compiling Client
0|razzle | ℹ 「wds」: Project is running at http://apps.syntapse.co.uk:3001/
0|razzle | ℹ 「wds」: webpack output is served from undefined
0|razzle | ℹ 「wds」: Content not from webpack is served from /app/razzle/razzle
0|razzle | ℹ 「wds」: 404s will fallback to /index.html
0|razzle | ✔ Client: Compiled successfully in 8.28s
0|razzle | ℹ Compiling Server
0|razzle | ✔ Server: Compiled successfully in 765.85ms
0|razzle | Warning: Please use `require("react-router-dom").Route` instead of `require("react-router-dom/Rout0|razzle | Warning: Please use `require("react-router-dom").Switch` instead of `require("react-router-dom/Swi0|razzle | ✅ Server-side HMR Enabled!
0|razzle | 🚀 started
0|razzle | ℹ Compiling Server
0|razzle | ✔ Server: Compiled successfully in 88.70ms
0|razzle | 🔁 HMR Reloading `./server`...
0|razzle | [HMR] Updated modules:
0|razzle | [HMR] - ./src/Home.js
0|razzle | [HMR] - ./src/App.js
0|razzle | [HMR] - ./src/server.js
0|razzle | [HMR] Update applied.
0|razzle | ℹ Compiling Client
0|razzle | ✔ Client: Compiled successfully in 73.55ms
0|razzle | ℹ Compiling Client
0|razzle | ✔ Client: Compiled successfully in 228.31ms
Самый полезный комментарий
Эта проблема связана с известной проблемой, работающей в докере. Запуск контейнера из среды Windows не передает события файла в контейнер Docker с собственной функциональностью. Текущий обходной путь, пока не реализована собственная функциональность, заключается в использовании опроса веб-пакета в контейнере докера, чтобы позволить веб-пакету опрашивать изменения файловой системы. Поэтому вам нужно добавить это в файл razzle.config.js, чтобы hmr мог видеть обновления:
@jaredpalmer Если это то, для чего вы хотели бы создать ветку функций, я мог бы придумать что-нибудь для PR. Просто дай мне знать. Спасибо за создание этого замечательного набора для начинающих.