在Docker容器以外的编辑文件(mac)上反应webpack不重build

我已经使用create-react-app在Docker容器中创build了一个反应应用程序。 当我编辑容器内的App.js时,应用程序自动重build,浏览器重新加载。 但是当我在容器 (在主机上)编辑文件时,它不会被重build。

这是一个webpack /手表的问题 – 但也许也有一些与运行在Mac上的docker? 任何帮助,将不胜感激。

我认为这种事情对于开发人员安装来说是非常正常的(例如,使用docker来创build您的构build环境,但使用实际代码的安装)。

这里是我用的github回购。 https://github.com/roocell/fullstack_react_nodejs_in_docker

我自己想清楚了。 这是webpackconfiguration,阻止了容器外的编辑触发重build和重新启动。 诀窍(显然这是一个遗留选项)

watchOptions { poll: 100 } 

注意:使用poll:1000导致它只刷新其他编辑。 每次编辑使用100个作品。 不知道为什么。

所以对于我的后端API,我正在运行node / expressjs。 在这里我需要安装并运行webpack和nodemon。 (nodemon需要-L选项才能在容器外进行编辑)。

我的前端是使用create-react-app创build的,其中没有webpackconfiguration公开。 我必须跑

 npm run eject 

暴露webpackconfiguration(我编辑了config / webpackDevServer.config.js文件)。

现在,使用popup是因为“你不能回去”而皱起了眉头…但是因为我使用一个docker容器,并且在构build容器时使用create-react-app / eject-我已经有效地从这个不良的情况。 (虽然我可能不得不修复我的docker文件,如果有什么改变我)。

所有这些编辑可以在我的docker文件中findhttps://github.com/roocell/fullstack_react_nodejs_in_docker

您应该使用卷将包含应用程序文件的主机文件夹链接到容器。 更好的办法是使用Docker-Compose,因为你使用了多个容器。

Docker容器纯粹是为了运行代码,而不是编辑它。 你真的不应该使用容器内的编辑器。

不过我认为你目前的应用程序结构是不正确的。 你的API应该提供你的前端检索和显示的数据。 目前,您的后端代码只能作为您的前端应用程序的路由器,但是您应该使用客户端路由器并构build一个RESTful JSON发送API。 然后从你的客户端javascript可以fetch调用你的API,这应该res.send一些JSON。