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

执行npm run build-storybook报错TypeError: 无法转undefined/null为对象

问题分析

报错栈指向vite-plugin-dts/dist/index.mjs:581:100的Object.values()调用,说明该插件在处理配置时,尝试对一个undefined或null的对象执行values方法。本地运行Storybook时,Vite的配置解析流程可能未触发该插件的这个逻辑分支,但执行build-storybook时会走完整的生产构建配置流程,从而暴露问题。

解决方案

以下是几种可行的修复方式:

1. 在Storybook构建中禁用vite-plugin-dts

Storybook静态构建不需要生成TypeScript类型声明,可直接在Storybook配置中过滤掉该插件:
修改.storybook/main.js,添加viteFinal方法:

import type { StorybookConfig } from '@storybook/react-vite'

const config: StorybookConfig = {
  stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@storybook/addon-onboarding',
    '@storybook/addon-interactions',
  ],
  framework: {
    name: '@storybook/react-vite',
    options: {},
  },
  docs: {
    autodocs: 'tag',
  },
  core: {
    builder: '@storybook/builder-vite', 
  },
  // 添加以下配置
  viteFinal: async (config) => {
    // 过滤掉vite-plugin-dts插件
    config.plugins = config.plugins?.filter(plugin => 
      !(plugin.name && plugin.name.includes('vite-plugin-dts'))
    );
    return config;
  },
}
export default config

2. 修复vite-plugin-dts的配置

检查项目根目录的vite.config.ts/js,确保传入vite-plugin-dts的所有配置项都有有效值,比如避免rollupTypes等选项设为null或undefined:

// vite.config.ts示例
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';

export default defineConfig({
  plugins: [
    dts({
      // 确保配置项不为空,比如明确设置rollupTypes为true/false
      rollupTypes: true,
      // 其他配置项也需避免undefined
      outputDir: 'dist/types'
    })
  ]
});

3. 更新vite-plugin-dts到最新版本

该问题可能是插件的已知bug,更新到最新版本可修复:

npm update vite-plugin-dts --save-dev
# 或使用yarn
yarn upgrade vite-plugin-dts --latest

4. 检查Vite配置的条件逻辑

如果你的Vite配置中有基于环境变量的条件判断,确保Storybook构建时能正确初始化所有配置项,比如避免在非生产环境下返回未定义的插件配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:23:21