版本
node:v14.16.1
npm:v8.2.0
react: v17.0.1
umi:v3.5.0
antd:v4.17.3
1. Umi项目安装react-devtools之后项目启动后报错TypeError: Cannot read property ‘forEach’ of undefined。
有3种解决方案:
- 禁用react-devtools;
- 根据报错找到报错文件的代码注释掉,例如:my-app\node_modules\umi\node_modules\@umijs\preset-built-in\bundled\@pmmmwh\react-refresh-webpack-plugin\client\ReactRefreshEntry.js

- 低版本的React-DevTools会引发react-refresh-webpack-plugin报错,升级版本。
issue传送门:https://github.com/umijs/umi/issues/6432
2. Umi项目使用Formily表单样式失效问题。

Ant-design-pro@4.0、umi@^3.5.0、formily@2.x出现表单样式问题,之前怀疑是开了MFSU导致的bug,后来发现不是,解决方案:在配置文件中加@formily/antd按需加载,+72~78行。
/config.ts
import { defineConfig } from 'umi';import { join } from 'path';import defaultSettings from './defaultSettings';import proxy from './proxy';import routes from './routes';const { REACT_APP_ENV } = process.env;export default defineConfig({hash: true,antd: {},dva: {hmr: true,},layout: {// https://umijs.org/zh-CN/plugins/plugin-layoutlocale: true, // 关闭国际化语言siderWidth: 208,...defaultSettings,},// https://umijs.org/zh-CN/plugins/plugin-localelocale: {// default zh-CNdefault: 'zh-CN',antd: true,// default true, when it is true, will use `navigator.language` overwrite defaultbaseNavigator: true,},dynamicImport: {loading: '@ant-design/pro-layout/es/PageLoading',},targets: {ie: 11,},// umi routes: https://umijs.org/docs/routingroutes,// Theme for antd: https://ant.design/docs/react/customize-theme-cntheme: {'primary-color': defaultSettings.primaryColor,'root-entry-name': 'default',},// esbuild is father build tools// https://umijs.org/plugins/plugin-esbuildesbuild: {},title: false,ignoreMomentLocale: true,proxy: proxy[REACT_APP_ENV || 'dev'],manifest: {basePath: '/',},// Fast Refresh 热更新fastRefresh: {},openAPI: [{requestLibPath: "import { request } from 'umi'",// 或者使用在线的版本// schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json"schemaPath: join(__dirname, 'oneapi.json'),mock: false,},{requestLibPath: "import { request } from 'umi'",schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json',projectName: 'swagger',},],nodeModulesTransform: { type: 'none' },mfsu: {},webpack5: {},exportStatic: {},extraBabelPlugins: [['babel-plugin-import',{ libraryName: '@formily/antd', libraryDirectory: 'esm', style: true },'@formily/antd',],],});
3.项目启动中出现警告require()
原因:@umijs/preset-ui文件/依赖中有用动态 require 语法,开启MFSU之后建议使用esm module import,否则将打破mfsu预构建匹配,出现如下图警告。
解决:目前测出是使用了umi-ui导致的把@umijs/preset-ui”: “^2.2.9卸载就可以解决(同时编译速度会提高10s左右),但是卸载就无法使用umi-ui,暂时保留容忍了。
参考:https://github.com/umijs/umi/issues/6766
