Storybook 7.0.23 - TypeError:filterProps.indexOf 不是函数
P粉333395496
P粉333395496 2023-09-03 23:16:35
[React讨论组]

我有一个简单的 React 组件:

import React from 'react';

const Button = (props) => {

  return (
    <div>My Button props: {Object.keys(props)}</div>
  )
}

export default Button;

我有一个故事书故事如下:

import React from 'react';

import Button from './';

export default {
  component: <Button />,
  tags: ['autodocs'],
};

export const Default = {
  args: {
    primary: true
  },
};

但是当故事书运行时,我收到以下错误:

Uncaught TypeError: filterProps.indexOf is not a function
    at index.js:576:1
    at Array.filter (<anonymous>)
    at formatReactElementNode (index.js:575:1)
    at formatTreeNode (index.js:735:1)
    at formatTree (index.js:746:1)
    at reactElementToJsxString (index.js:786:1)
    at config.mjs:19:1
    at mapSingleChildIntoContext (react.development.js:1149:1)
    at traverseAllChildrenImpl (react.development.js:1007:1)
    at traverseAllChildren (react.development.js:1092:1)

我注意到,当我删除故事书中的 args 时,组件就会呈现。

.storybook/main.js:

module.exports = {
  stories: [
    "../src/**/*.story.@(js|jsx|ts|tsx)",
  ],
  addons: [
    "@storybook/addon-links",
    "@storybook/addon-essentials",
    "@storybook/addon-interactions",
  ],
  framework: {
    name: "@storybook/react-webpack5",
    options: {},
  },
  docs: {
    autodocs: "tag",
  },
  typescript: {
    reactDocgen: false
  },
  webpackFinal: (config) => {
    const cssLoaders = [{
      loader: 'postcss-loader',
      options: {
        plugins: [
          require('postcss-assets')({ cache: true }),
          require('autoprefixer')({ browsers: ['chrome 44'] })
        ]
      }
    }, {
      loader: 'sass-loader',
      options: {
        includePaths: ['node_modules', 'src/scss'],
        quietDeps: true
      }
    }]

    config.module.rules.push({
      test: /\.js?$/,
      exclude: /(node_modules|coverage|target)/,
      loader: 'babel-loader',
      options: {
        plugins: ['@babel/plugin-syntax-dynamic-import']
      }
    }, {
      test: /\.s?css$/,
      use: ['style-loader', ...cssLoaders]
    });

    return config;

  },
}

.storybook/preview.js:

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


export default preview;

我不确定这是否是我的项目,但当我使用 Storybook 版本时,我的组件正在工作 "@storybook/react": "6.1.21",

不太确定发生了什么!

编辑:

我已经找到了导致错误的文件,它是一个node_modules文件: node_modules/react-element-to-jsx-string/dist/cjs/index.js

P粉333395496
P粉333395496

全部回复(1)
P粉731977554

我错过了 package.json 具有以下内容的事实:

"overrides": {
    "react-element-to-jsx-string": "14.0.2"
  },

摆脱它可以让我的故事书重新开始运行。 叹息

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号