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

基于Quasar的Storybook组件测试遇Codegen node缺失错误,求解决方案

解决Storybook + Quasar组件测试中的插槽报错问题

报错信息:

Error: Codegen node is missing for element/if/for node. Apply appropriate transforms first.

问题分析

该错误源于Vue模板编译时转换不完整,在Vite+Storybook环境下,Quasar组件的插槽处理需要额外的编译配置支持,导致插槽节点未被正确生成。

解决方案

1. 配置Storybook的Vite编译支持

在.storybook/main.ts(或.js)中,添加Quasar的Vite插件配置,确保模板转换正确:

import { mergeConfig } from 'vite';
import { quasar, transformAssetUrls } from '@quasar/vite-plugin';

export default {
  stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
  framework: {
    name: '@storybook/vue3-vite',
    options: {},
  },
  async viteFinal(config) {
    return mergeConfig(config, {
      plugins: [
        quasar({
          // 若有自定义Quasar变量,取消注释并修改路径
          // sassVariables: 'src/quasar-variables.sass',
        }),
      ],
      vue: {
        template: {
          transformAssetUrls,
        },
      },
    });
  },
};

2. 调整组件插槽的写法

给组件中的匿名插槽添加容器包裹,避免裸插槽导致的编译异常:

<template>
  <slot name="header" />
  <q-banner
    class="banner banner-border"
    v-bind="props"
  >
    {{ label }}
    <slot name="action" />
    <slot name="avatar" />
    <!-- 用div包裹匿名插槽 -->
    <div><slot /></div>
  </q-banner>
  <slot name="footer" />
</template>

3. 优化Storybook故事的模板写法

避免在模板中直接嵌套args绑定,解构后单独传递属性:

const Default: Story = {
  render: (args) => ({
    components: { AppMoleculeBanner, AppBaseIcon },
    setup() {
      const { color, name, ...restArgs } = args;
      return { color, name, restArgs };
    },
    template: `
      <app-molecule-banner v-bind="restArgs">
        <template #avatar>
          <app-base-icon :color="color" :name="name" />
        </template>
        Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum is simply dummy text of the printing and typesetting industry.
      </app-molecule-banner>
    `,
  }),
};

4. 同步依赖版本

更新相关依赖,避免版本不兼容问题:

npm update @storybook/vue3-vite @quasar/vite-plugin vite

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:36:09