Storybook Addons插件在Vue组件中无法渲染,该怎么排查?
最近在用Storybook开发Vue组件时,安装了@storybook/addon-essentials后,组件预览区域直接显示空白。之前单独运行组件没问题,但加上参数装饰器后就出错了。
我尝试在按钮组件的Story里这样配置:
// Button.stories.js
import { Meta } from '@storybook/addon-docs';
import Button from './Button.vue';
export default {
title: 'Components/Button',
component: Button,
parameters: {
controls: { expanded: true },
essential: true // 这里是不是有问题?
}
} satisfies Meta;
export const Primary = () => ({
components: { Button },
template: '<Button>Click me</Button>',
});
控制台没有报错,但预览区就是空白。已经试过删除node_modules和.storybook缓存,重新安装依赖还是不行。是不是Addon配置顺序有冲突?或者需要额外导入某些模块?
essential: true这个参数上,不是配置顺序的问题,而是 Storybook 的 Addons 参数写法搞错了。essential: true是addon-essentials里用于控制哪些插件默认启用的配置,但它应该写在addons字段里,而不是parameters里。你这么写在parameters里,Storybook 会把它当成组件的参数透传给 Vue 组件,结果 Vue 里没处理这个参数,直接忽略了,但更严重的是——某些版本的 Storybook 在解析这种非法参数时会静默失败,导致整个渲染流程中断,页面就白了。另外你用的是
export default { ... } satisfies Meta;,说明你用的是 Storybook 7 的新写法(Vite + Vue3 + Composition API),那正确的写法应该是这样优化一下:Button.stories.js里改成:重点改了两处:
一是把
essential配置删了,它不该出现在这里;二是把
Primary从函数写法改成对象写法(Storybook 7 推荐用render函数),这样更稳定,尤其配合 Vue3 的 Composition API。如果你坚持用函数写法,那也得改成:
别加任何参数,先确认能渲染出来,再逐步加
args。另外顺带确认下你的
.storybook/main.js里是不是这样写的:framework配置对不上也会导致组件不渲染,但一般会报错,你没报错更可能是前面那个参数写错的问题。先按上面改一下试试,90% 概率能解决。
import '@storybook/addon-essentials';
另外你那个参数配置里的 essential: true 是多余的,可以删掉。addons默认都会生效。