【问题标题】:Webpack dev server only hot reloads on dockerWebpack 开发服务器仅在 docker 上热重载
【发布时间】:2020-06-14 23:38:44
【问题描述】:

我有一段代码可以在 docker 或本地运行。 出于某种原因,热重载仅适用于 docker。

代码显然是相同的,并且内容由 webpack 开发服务器正确托管和提供。热重载没有端口错误,两种解决方案都使用相同的主机端口。

会是什么?

以下是区别:

主机:带有节点 v14.1.0 的 ubuntu

容器:节点:14.0.0-alpine3.10

用来运行的命令是:

webpack-dev-server --config webpack/webpack.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
};

包的版本是:

  • "react-hot-loader": "^4.12.20",
  • “webpack”:“^4.42.1”,
  • "webpack-cli": "^3.3.11",
  • “webpack-dev-server”:“^3.10.3”

我想不出为什么它只能在 docker 上运行,而不是在主机上运行,​​如果我期望相反的话。

【问题讨论】:

    标签: reactjs docker webpack-dev-server


    【解决方案1】:

    错误堆栈将使我们能够轻松地帮助您。 也许您的 3001 端口正在被其他服务使用。

    虽然不相关,但在这里 https://youtu.be/kIe7E02j2jY 您将找到有关从头开始为 React 配置 webpack 4 的详细信息。如果您是初学者,这是有用的资源。

    【讨论】:

    • 这就是没有错误的事情。它只是不会在保存时重新加载,没有控制台错误没有 XHR 错误
    【解决方案2】:

    热重载不起作用的原因是webpack-dev-server 在目录中查找文件更改的方式,它使用fseventinotify。这些是 webpack 用来监视指定目录中文件的模块。您可以查看此answer for more info,如果您觉得它是正确的,请接受并投票。

    【讨论】:

    • 我可能遗漏了一些东西,但对我来说并不清楚为什么它可以在 docker 上运行而不能在 Ubuntu 上运行
    猜你喜欢
    • 2018-08-13
    • 2018-11-24
    • 2019-02-13
    • 2020-03-06
    • 2016-07-04
    • 2016-05-18
    • 2019-05-22
    • 2019-01-26
    • 2017-05-10
    相关资源
    最近更新 更多