umijs / umi

A framework in react community ✨
https://umijs.org
MIT License
15.34k stars 2.65k forks source link

[问题] umi build: Error 'Top Level Await not enable' #7746

Closed PingZaiDotTse closed 2 years ago

PingZaiDotTse commented 2 years ago
      //原因出在./global.tsx里下面这段
     //提示需要开启topLevelAwait: true,尝试在config.ts里的webpack5配置,但提示不支持
     //remove all caches
              if (window.caches && await window.caches.keys()) {
                caches.keys().then((keys) => {
                  keys.forEach((key) => {
                    caches.delete(key);
                  });
                });
             }

pkg.json

     {
  "name": "",
  "version": "0.0.2",
  "private": true,
  "author": {
    "name": ""
  },
  "description": "",
  "scripts": {
    "analyze": "cross-env ANALYZE=1 umi build",
    "build": "umi build",
    "deploy": "npm run build && npm run gh-pages",
    "dev": "npm run start:dev",
    "gh-pages": "gh-pages -d dist",
    "i18n-remove": "pro i18n-remove --locale=zh-CN --write",
    "postinstall": "umi g tmp",
    "lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier && npm run tsc",
    "lint-staged": "lint-staged",
    "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
    "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style",
    "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
    "lint:prettier": "prettier -c --write \"src/**/*\" --end-of-line auto",
    "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less",
    "openapi": "umi openapi",
    "precommit": "lint-staged",
    "prettier": "prettier -c --write \"src/**/*\"",
    "start": "cross-env UMI_ENV=dev umi dev",
    "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev PORT=8804 umi dev",
    "start:mock": "cross-env REACT_APP_ENV=mock UMI_ENV=dev umi dev",
    "start:no-mock": "cross-env MOCK=none UMI_ENV=dev umi dev",
    "start:no-ui": "cross-env UMI_UI=none UMI_ENV=dev umi dev",
    "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev umi dev",
    "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev umi dev",
    "pretest": "node ./tests/beforeTest",
    "test": "umi test",
    "test:all": "node ./tests/run-tests.js",
    "test:component": "umi test ./src/components",
    "serve": "umi-serve",
    "tsc": "tsc --noEmit"
  },
  "lint-staged": {
    "**/*.less": "stylelint --syntax less",
    "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
    "**/*.{js,jsx,tsx,ts,less,md,json}": [
      "prettier --write"
    ]
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 10"
  ],
  "dependencies": {
    "@ant-design/charts": "^1.2.13",
    "@ant-design/icons": "^4.5.0",
    "@ant-design/pro-card": "^1.14.17",
    "@ant-design/pro-descriptions": "^1.6.8",
    "@ant-design/pro-form": "^1.18.3",
    "@ant-design/pro-layout": "^6.15.3",
    "@ant-design/pro-table": "^2.30.8",
    "@umijs/route-utils": "^1.0.36",
    "antd": "^4.14.0",
    "classnames": "^2.2.6",
    "lodash": "^4.17.11",
    "moment": "^2.25.3",
    "omit.js": "^2.0.2",
    "react": "^16.0.0",
    "react-dev-inspector": "^1.1.1",
    "react-dom": "^16.0.0",
    "react-helmet-async": "^1.0.4",
    "umi": "^3.5.0",
    "umi-serve": "^1.9.10",
    "yet-another-abortcontroller-polyfill": "^0.0.4"
  },
  "devDependencies": {
    "@ant-design/pro-cli": "^2.0.2",
    "@types/express": "^4.17.0",
    "@types/history": "^4.7.2",
    "@types/jest": "^26.0.0",
    "@types/lodash": "^4.14.144",
    "@types/react": "^16.0.0",
    "@types/react-dom": "^16.0.0",
    "@types/react-helmet": "^6.1.0",
    "@umijs/fabric": "^2.6.2",
    "@umijs/openapi": "^1.1.14",
    "@umijs/plugin-blocks": "^2.0.5",
    "@umijs/plugin-esbuild": "^1.0.1",
    "@umijs/plugin-openapi": "^1.2.0",
    "@umijs/plugin-qiankun": "^2.35.4",
    "@umijs/preset-ant-design-pro": "^1.2.0",
    "@umijs/preset-dumi": "^1.1.7",
    "@umijs/preset-react": "^1.8.17",
    "@umijs/yorkie": "^2.0.3",
    "carlo": "^0.9.46",
    "cross-env": "^7.0.0",
    "cross-port-killer": "^1.1.1",
    "detect-installer": "^1.0.1",
    "enzyme": "^3.11.0",
    "eslint": "^7.1.0",
    "express": "^4.17.1",
    "gh-pages": "^3.0.0",
    "jsdom-global": "^3.0.2",
    "lint-staged": "^10.0.0",
    "mockjs": "^1.0.1-beta3",
    "prettier": "^2.3.2",
    "puppeteer-core": "^8.0.0",
    "stylelint": "^13.0.0",
    "typescript": "^4.2.2"
  },
  "engines": {
    "node": ">=10.0.0"
  },
  "gitHooks": {
    "commit-msg": "fabric verify-commit"
  }
}

config.ts

   /*
 * @Author: your name
 * @Date: 2021-09-03 14:28:27
 * @LastEditTime: 2021-12-30 11:07:18
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /xxx/config/config.ts
 */
// https://umijs.org/config/
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-layout
    locale: false,
    siderWidth: 208,
    ...defaultSettings,
  },
  dynamicImport: {
    loading: '@ant-design/pro-layout/es/PageLoading',
  },
  targets: {
    ie: 11,
  },

  routes,
  theme: {
    'primary-color': defaultSettings.primaryColor,

  },
  // esbuild is father build tools
  // https://umijs.org/plugins/plugin-esbuild
  esbuild: {},
  title: false,
  ignoreMomentLocale: true,
  proxy: proxy[REACT_APP_ENV || 'dev'],
  manifest: {
    basePath: '/',
  },
  autoprefixer:{

  },
  // 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: {
    // production: { output: '.mfsu-production' }
  },
  webpack5: {
  },
  exportStatic: {},
  // qiankun: {
  //   slave: {},
  // },
});
dfsfyt commented 2 years ago

把config里面的mfsu给关掉就可以了,初步判断是因为umi的缓存方案有问题