Next.js+React使用Storybook报Couldn't find story matching错误
问题根因
「Couldn't find story matching」报错(翻译:找不到匹配的story)的本质是SpaceAvailability对应的story文件加载解析失败,Storybook无法识别文件内导出的story项,由两个明确问题导致:
- 导入逻辑错误:story文件直接从
.test后缀的测试文件导入mock数据。测试文件依赖Jest等测试框架注入的全局API、测试专用依赖,Storybook的构建环境默认没有注入这些运行时能力,导入后会直接触发引用错误,导致整个story模块加载中断,这是最核心的原因。 - 代码笔误:第二个story导出的变量名为
WeekStartsSunday,但后续绑定args时错误写为WeekStartsMonday.args,该问题不会直接导致加载失败,但会造成Sunday的story无有效参数、Monday的story参数被意外覆盖。
修复步骤
- 抽离公共mock数据:把
mockAvailability从SpaceAvailability.test测试文件移到同目录下独立的非测试文件,比如命名为_mockData.js,之后在story文件、测试文件里分别从这个独立文件导入mock数据,禁止在story文件中导入任何.test/.spec后缀的测试文件。 - 修正笔误:将第二个story的args绑定代码改为对应正确的变量名,修正后片段如下:
export const WeekStartsSunday = Template.bind({}); WeekStartsSunday.args = { availability: mockAvailability, weekStartsOnMonday: false, };
- 校验扫描规则:如果前两步完成后仍报错,检查该story文件的命名、存放路径是否匹配项目
.storybook/main.js中stories字段配置的扫描规则,确保文件后缀、存放路径在Storybook的扫描范围内。
内容的提问来源于stack exchange,提问作者Walter Monecke
相关产品推荐
相关产品推荐

