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

在Storybook中使用Quasar组件时报Cannot read property 'screen' of undefined错误

错误根因

该报错是因为Quasar组件运行依赖Quasar插件注入的全局上下文,当前Storybook运行环境没有注册Quasar插件,导致无法读取全局实例上的screen属性。


解决步骤

  1. 修改.storybook/preview.js配置,注册Quasar插件
import { getCurrentInstance } from 'vue'
import { Quasar } from 'quasar'
import 'quasar/dist/quasar.css'

export const parameters = {
  actions: { argTypesRegex: "^on[A-Z].*" },
  controls: {
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
}

export const decorators = [
  (story) => ({
    components: { story },
    template: '<story />',
    setup() {
      const app = getCurrentInstance().appContext.app
      // 此处配置和项目中Quasar的全局配置保持一致即可
      app.use(Quasar, {
        config: {},
        plugins: {}
      })
    }
  })
]
  1. 补全故事文件的组件导入
    你当前的故事代码中使用了QInput组件但没有在导入和注册列表中添加,需要补全对应逻辑:
// 补全QInput导入
import { QLayout, QPageContainer, QPage, QSelect, QBtn, QInput } from 'quasar'

export default {
  title: 'Quasar'
}

export const Components = () => ({
  title: 'QuasarComponents',
  // 补全QInput注册
  components: { QLayout, QPageContainer, QPage, QSelect, QBtn, QInput },
  template: `<q-layout>
    <q-page-container>
      <q-page class="full-height full-width justify-center items-center q-pa-xl">
        <div class="col-auto">
          <q-input v-model="name" label="Full name" />
          <q-select v-model="role" :options="options" label="User Role" />
        </div>
      </q-page>
    </q-page-container>
  </q-layout>`,
  data () {
    return {
      name: null,
      role: 'User',
      options: ['Admin', 'Supervisor', 'User']
    }
  }
})
  1. 重启Storybook服务即可正常渲染Quasar组件。

补充说明

如果你的项目中Quasar有自定义全局配置(比如主题色、图标集、额外插件等),直接在app.use(Quasar)的第二个参数中填入和你项目入口文件相同的Quasar配置即可,保证组件渲染效果和项目中一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:48:03