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

React Storybook修改文件不自动重载,如何启用热模块重载?

解决Create React App + Storybook热模块重载(HMR)失效问题

我经常碰到CRA集成Storybook后HMR不工作的情况,大多是版本兼容或者配置细节的问题,给你几个靠谱的解决步骤,按顺序试试:

1. 优先更新Storybook相关依赖到最新稳定版

旧版本的Storybook和CRA的webpack配置(尤其是webpack5)可能存在HMR兼容问题,先执行更新命令:

yarn upgrade @storybook/react @storybook/core @storybook/preset-create-react-app --latest

2. 调整.storybook/main.js配置

确保你的配置文件正确使用了CRA预设,并且启用了webpack5构建器(CRA现在默认用webpack5),同时优化HMR插件设置:

module.exports = {
  stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/preset-create-react-app", // 必须保留这个预设,才能和CRA配置对齐
  ],
  core: {
    builder: "webpack5", // 指定webpack5构建,避免和CRA的webpack版本冲突
  },
  webpackFinal: async (config) => {
    // 优化HMR插件的超时设置,避免因构建延迟导致重载失败
    config.plugins.forEach(plugin => {
      if (plugin.constructor.name === 'HotModuleReplacementPlugin') {
        plugin.options = { ...plugin.options, fullBuildTimeout: 200 };
      }
    });
    return config;
  },
};

3. 清除Storybook缓存

有时候缓存会导致HMR逻辑异常,删除缓存目录后重启Storybook:

  • Mac/Linux:
rm -rf node_modules/.cache/storybook
  • Windows:
rd /s /q node_modules\.cache\storybook

4. 启动Storybook时禁用管理器缓存

在package.json的启动命令里添加--no-manager-cache参数,避免Storybook管理器端的缓存阻止页面刷新:

{
  "scripts": {
    "storybook": "start-storybook -p 6006 --no-manager-cache"
  }
}

完成以上步骤后,重启Storybook,修改组件或stories文件应该就能触发自动重载了。如果还是不行,可以检查是否有其他第三方依赖干扰了webpack配置,但90%的情况上面的方法都能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:04:15