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

如何分离Storybook的.storybook与stories目录实现关注点隔离?

将Storybook stories移入.storybook后加载超时的解决方法

背景

默认情况下,Storybook.js集成到Create-React-App项目时,会生成.storybook和src/stories两个目录。从关注点分离的角度,Storybook属于独立于业务逻辑的工具代码,放在src下会混淆业务与工具边界,因此尝试将stories目录移入.storybook中。

问题现象

移动目录后,Storybook页面持续显示加载spinner,终端和浏览器控制台无报错;偶尔等待较长时间后会出现加载超时错误:

Loading chunk vendors-node_modules_babel_runtime_helpers_esm_assertThisInitialized_js-node_modules_babel_ru-6be1ea failed.

(timeout: http://localhost:6006/vendors-node_modules_babel_runtime_helpers_esm_assertThisInitialized_js-node_modules_babel_ru-6be1ea.iframe.bundle.js)

当前目录结构与配置

目录结构

  • .storybook
    • /stories
    • /assets
    • main.ts

main.ts配置

import type { StorybookConfig } from "@storybook/react-webpack5";

const config: StorybookConfig = {
  stories: ["./stories/**/*.mdx", "./stories/**/*.stories.@(js|jsx|ts|tsx)"],
  staticDirs: ["./assets"],
};

已尝试的无效操作

  • 创建父目录统一存放.storybook和stories,但运行npm run storybook时无法识别.storybook目录
  • 查阅Webpack v5相关文档,未找到有效解决思路

解决方案

1. 修正main.ts的路径与Webpack配置

问题核心是Storybook无法正确解析业务组件路径和静态资源路径,需调整配置:

import type { StorybookConfig } from "@storybook/react-webpack5";
import path from "path";

const config: StorybookConfig = {
  stories: ["./stories/**/*.mdx", "./stories/**/*.stories.@(js|jsx|ts|tsx)"],
  // 使用绝对路径指定静态资源目录
  staticDirs: [path.resolve(__dirname, "./assets")],
  webpackFinal: async (config) => {
    // 添加项目src目录到模块解析路径,确保stories能正确引用业务组件
    if (config.resolve?.modules) {
      config.resolve.modules.push(path.resolve(__dirname, "../src"));
    } else {
      config.resolve = { modules: [path.resolve(__dirname, "../src")] };
    }
    return config;
  },
};

export default config;

2. 清理Storybook缓存并重启

缓存可能导致路径解析异常,执行以下命令清理后重启:

rm -rf node_modules/.cache/storybook
npm run storybook

3. 检查stories中的组件引用路径

确保stories文件中引用业务组件的相对路径正确,例如:

// 原路径(src/stories下)
import Button from "../components/Button";

// 修改后(.storybook/stories下)
import Button from "../../src/components/Button";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:42:02