我正在尝试在docker中运行webpack-dev-server,这样我就可以热重新加载我的react组件。由于某些原因,webpack-dev-server不能通过docker进行热重新加载。根据日志,对react文件的更改确实会重新编译代码。但是我的浏览器没有收到刷新的信号。如果我手动刷新浏览器,它确实会反映代码更改。
有趣的是,当我在主机上本地运行时,同样的配置实际上是有效的,所以我怀疑这是一个套接字连接问题。
webpack-dev-server如何让web浏览器知道应该重新加载?
我还注意到webpack-dev-server打开了8080端口。这样做的目的是什么?我是否要为我的web浏览器提供(http://localhost:8080/)地址,而不是通常的web服务器地址(http://localhost:3000/)?或者,端口8080是否用于其他用途?
以下是我的配置文件以供参考:
dev_server:
https: false
host: localhost
port: 8080
public: localhost:8080
hmr: false
# Inline should be set to true if using HMR
inline: true
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
pretty: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'发布于 2020-09-08 05:36:35
好了,我发现在我的特定配置中有三件事是错误的。首先,需要加载"web-dev-server“才能进行热加载。因此,我的Procfile.dev-hmr如下所示:
web: bundle exec rails s -b 0.0.0.0 -p 3000
webpack-dev-server: bin/webpack-dev-server我加载这个文件,如下所示:
foreman start -f Procfile.dev-hmr其次,webpack-dev-server在3035端口上操作,因此您必须在docker上打开该端口。我使用"port“命令完成了此操作,并以以下docker-compose文件为例:
version: '3'
services:
db:
image: postgres:9.3
ports:
- "5432:5432"
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: foreman start -f Procfile.dev-hmr
volumes:
- .:/myapp
expose:
- 3000
- 3035
ports:
- "3000:3000"
- "3035:3035"
depends_on:
- db
user: "1000:1000"
environment:
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0我能够在上面的docker-compose.yml脚本中做到这一点。
https://stackoverflow.com/questions/63065448
复制相似问题