我有一段代码,可以在docker上运行,也可以在本地运行,但由于某些原因,热重载只在docker上运行。
代码显然是相同的,而且内容是用webpack开发服务器正常托管和服务的。热重载没有端口错误,而且两个解决方案使用的是同一个主机端口。
到底是什么原因呢?
以下是两者的区别。
HOST: ubuntu with node v14.1.0.
CONTAINER:node:14.0.0-alpine3.10。
用来运行的命令是
webpack-dev-server --config webpackwebpack.dev.js --hot
而webpack的相关部分是
module.exports = {
...common,
mode: "development",
devServer: {
historyApiFallback: true,
host: "0.0.0.0",
publicPath: "/",
allowedHosts: ["0.0.0.0", "localhost", "*"],
port: process.env.port || 3001
},
watch: true
};
而包的版本是:
我想不出为什么它只能在docker上运行,而不能在主机上运行,如果有的话,我希望是相反的。
一个错误堆栈将使我们很容易帮助你。也许你的3001端口正在被其他服务使用。
但这与此无关,这里 https:/youtu.bekIe7E02j2jY 你会发现关于从头开始为React配置webpack 4的细节。如果你是初学者,这是很有用的资源。
之所以热重载不能用,是由于 webpack-dev-server
寻找目录中的文件变化,它使用的是 fsevent
和 inotify
. 这些都是webpack用来观察指定目录下的文件的模块。你可以看看这个 详询如果你觉得它是对的,请接受并加注。