【发布时间】:2021-10-03 04:48:28
【问题描述】:
这是我的开发设置:
- 我在 docker 内部使用
create-react-app创建了一个 React 项目 - 我在
docker-compose.yml文件中使用npm start以通常的方式提供服务 - 现在可以在我的本地主机上使用
http://localhost:3000访问它 - 为了模拟服务器条件,我设置了 nginx 和本地 DNS
- 在
/etc/hosts我添加127.0.0.1 domain.local - 使用mkcert 我制作了本地有效的证书
- 在
nginx我创建如下配置文件:
server {
listen 80;
server_name domain.local;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name domain.local;
ssl_certificate /Temp/Project/Certificate.pem;
ssl_certificate_key /Temp/Project/Key.pem;
location / {
proxy_pass http://localhost:3000;
}
}
问题是当我转到https://domain.local 而不是http://localhost:3000 时,我失去了热重载,并且我在控制台中看到了这个错误:
webpackHotDevClient.js:60 WebSocket 连接到“wss://domain.local/sockjs-node”失败:
../../Project/node_modules/react-dev-utils/webpackHotDevClient.js @ webpackHotDevClient.js:60
webpack_require @ bootstrap:851
fn@bootstrap:150
1@index.js:7
webpack_require@bootstrap:851
checkDeferredModules @ bootstrap:45
webpackJsonpCallback @ bootstrap:32
(匿名)@main.chunk.js:1
webpackHotDevClient.js:76 开发服务器已断开连接。
必要时刷新页面。
我该如何解决这个问题?
【问题讨论】:
-
在服务器部署中,我根本不希望看到 Webpack 开发服务器;
npm run build您的应用程序到静态文件并直接从 Nginx 容器提供它们。 -
我不在服务器上@DavidMaze,你为什么这么认为?我在本地计算机上进行开发。第一行说这是我的开发设置。
-
你可以在没有 Docker 的情况下使用 Node 吗?我在看“模拟服务器条件,我设置了 nginx”要点;在那种环境中,您将没有开发服务器。
-
@DavidMaze,感谢您的回复。我知道我可以不用docker直接使用node。但是 docker 是我们技术栈的一部分,我们在任何地方都使用它,我们不会在本地笔记本电脑上安装 node、laravel、django 或 .net。我们只在容器内编码。
标签: node.js reactjs docker nginx