You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack Dev Server运行时bundle.js文件不更新问题求助

webpack-dev-server编译后磁盘bundle.js未更新,但webpack命令正常的问题解决

问题描述

已在webpack配置的output中设置publicPath,运行yarn webpack-dev-server修改TS代码时,终端显示重新编译成功,但磁盘中的public/bundle.js文件没有更新;执行yarn webpack命令时则能正常生成更新后的文件,排除路径配置问题,请问可能的原因及解决方法?

当前webpack配置:

const path = require("path");

module.exports = {
  mode: "development",
  entry: "./src/index.ts",
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: "ts-loader", 
        include: [path.resolve(__dirname, "src")],
      },
    ],
  },
  output: {
    publicPath: "public", 
    filename: "bundle.js", 
    path: path.resolve(__dirname, "public"), 
  },
};

依赖版本:

  • ts-loader: 9.4.2
  • typescript: 4.9.5
  • webpack: 5.75.0
  • webpack-cli: 5.0.1
  • webpack-dev-server: 4.11.1

核心原因

webpack-dev-server默认将编译后的产物存储在内存中,不会写入你配置的output.path对应的磁盘目录。你看到的public/bundle.js其实是之前执行yarn webpack生成的旧文件,dev-server运行时的更新内容只存在于内存,不会覆盖磁盘文件——这是dev-server为提升热更新速度的设计逻辑。

解决方法

方法1:通过dev-server的HTTP服务访问更新后的资源

dev-server会在内存中搭建HTTP服务,你可以通过访问http://localhost:8080/public/bundle.js(默认端口8080,若修改过端口则对应调整)获取到更新后的bundle文件。同时确保HTML中引用bundle的路径与publicPath匹配,比如:

<script src="/public/bundle.js"></script>

(注意路径前的斜杠,避免相对路径导致的资源加载问题)

方法2:配置dev-server将产物写入磁盘

如果确实需要dev-server将编译后的文件同步写入磁盘,可以在webpack配置中添加devServer.writeToDisk选项:

const path = require("path");

module.exports = {
  mode: "development",
  entry: "./src/index.ts",
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: "ts-loader", 
        include: [path.resolve(__dirname, "src")],
      },
    ],
  },
  output: {
    publicPath: "public", 
    filename: "bundle.js", 
    path: path.resolve(__dirname, "public"), 
  },
  devServer: {
    writeToDisk: true // 开启后编译产物会写入output.path指定的磁盘目录
  }
};

开启该选项后,修改代码重新编译时,磁盘中的public/bundle.js就会同步更新。

内容的提问来源于stack exchange,提问作者star98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:33