Storybook 7.5.1加载name.stories.mdx报错,重命名后缀可正常运行
Storybook 7.5.1中
*.stories.mdx文件报错indexer.createIndex is not a function的排查方案 问题背景
将基于React-Vite的设计系统从Storybook 6.x升级至7.5.1版本并固定所有依赖后,遇到以下异常:
- 所有命名为
name.stories.mdx的MDX文件启动时抛出错误:
Unable to index ./src/name.stories.mdx: WARN TypeError: indexer.createIndex is not a function
- 修改文件名(如改为
name.stories.xxx.mdx,内容完全不变)后,Storybook可正常渲染该故事。
当前使用的main.ts配置如下:
import type { StorybookConfig } from '@storybook/react-vite' import { mergeConfig } from 'vite' const config: StorybookConfig = { stories: [ '../src/name.stories.@(mdx)', ], addons: [ '@storybook/addon-links', '@storybook/addon-essentials', '@storybook/addon-interactions', '@storybook/addon-onboarding', ], framework: '@storybook/react-vite', docs: { autodocs: 'tag', }, viteFinal: async (config) => mergeConfig(config, { base: './', // Set the base path for Storybook builds to ensure assets are loaded correctly }), } export default config
可能的原因与排查建议
- 默认文件匹配逻辑冲突:
*.stories.mdx是Storybook默认识别的故事文件格式,升级后内部索引逻辑可能对该命名格式有特殊处理,导致索引器实例异常。建议修改stories配置为通用匹配规则(如../src/**/*.stories.@(mdx|js|jsx|ts|tsx)),而非指定单个文件,测试是否仍触发错误。 - Autodocs索引逻辑异常:开启的
autodocs: 'tag'可能对标准命名的stories.mdx文件有专属索引逻辑,升级后该模块存在兼容性问题。可暂时关闭autodocs配置,验证name.stories.mdx是否能正常加载。 - 依赖锁定后的兼容性问题:虽固定了依赖版本,但Storybook 7.x部分插件间可能存在隐性冲突,或残留6.x版本的旧依赖。建议删除
node_modules和锁文件(package-lock.json/yarn.lock)后重新安装,确保依赖树一致性;同时检查package.json是否存在未升级的旧版Storybook插件。 - Vite配置影响:
viteFinal中设置的base: './'可能干扰Storybook内部文件解析路径,导致索引器无法正确定位文件。可暂时移除该配置,测试问题是否解决。 - 内部索引模块bug:错误指向
indexer.createIndex方法不存在,可能是Storybook内部索引模块的已知bug。建议升级至7.5.x最新补丁版本(如7.5.3),或在main.ts中添加features: { storyStoreV7: true }切换至新故事存储机制,尝试绕过旧索引逻辑问题。
内容的提问来源于stack exchange,提问作者SebastianG
相关产品推荐
相关产品推荐

