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

解决React-Virtualized与Vite的bpfrpt_proptype_WindowScroller导入错误

解决Vite+React16中react-virtualized 9.21.2的WindowScroller导出错误问题

问题根源

react-virtualized 9.x版本的ES模块中,prop-types的导出方式与Vite的ES模块解析逻辑不兼容,导致onScroll.js中无法找到bpfrpt_proptype_WindowScroller的匹配导出。

解决方案

方案一:切换到CommonJS版本的react-virtualized

修改vite.config.js的resolve.alias配置,将react-virtualized的ES模块路径映射到CommonJS版本:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      // 全局替换ES模块为CommonJS版本
      'react-virtualized/dist/es': 'react-virtualized/dist/commonjs'
    }
  },
  optimizeDeps: {
    include: ['react-virtualized']
  }
});

CommonJS版本的导出结构更稳定,能绕过Vite解析ES模块时的导出匹配问题。

方案二:自定义Rollup插件修复导入语句

在vite.config.js中添加自定义Rollup插件,构建时替换错误的ES模块导入为CommonJS的require:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  optimizeDeps: {
    include: ['react-virtualized']
  },
  build: {
    rollupOptions: {
      plugins: [
        {
          name: 'fix-react-virtualized-import',
          transform(code, id) {
            if (id.includes('react-virtualized/dist/es/WindowScroller/onScroll.js')) {
              return code.replace(
                "import { bpfrpt_proptype_WindowScroller } from '../WindowScroller';",
                "const { bpfrpt_proptype_WindowScroller } = require('../WindowScroller');"
              );
            }
            return code;
          }
        }
      ]
    }
  }
});

该插件会精准定位出错文件,修改导入语法以适配Vite的解析逻辑。

方案三:调整prop-types依赖版本

如果项目中prop-types版本过高,安装react-virtualized 9.21.2兼容的版本:

npm install prop-types@15.7.2 --save

react-virtualized 9.x依赖prop-types 15.x版本,高版本的prop-types导出结构变化可能引发该错误。

内容的提问来源于stack exchange,提问作者Rahul Ramshrey Chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:49:59