likes
comments
collection
share

Vite + Qiankun 微前端项目中的 require is not defined 问题Vite + Qiank

作者站长头像
站长
· 阅读数 15

最近在使用 Vite + Vue3 + Qiankun 搭建微前端的主应用时,遇到一个问题:开发时一切正常,但在打包后总是报错,提示某个方法找不到。经过排查,发现问题出在 require 语法上。具体错误信息为:require is not defined。在网上搜索后发现,很多人都遇到过类似的问题。查找资料后发现,浏览器不识别 CommonJS 语法,需要通过插件进行转换。

Vite + Qiankun 微前端项目中的 require is not defined 问题Vite + Qiank

解决方法

方法1:项目代码中使用了 require 语法

如果你的项目代码中使用了 require 语法,可以使用 vite-plugin-require-transform 插件进行转换:

首先,安装插件:

npm install vite-plugin-require-transform -D

然后,在 Vite 配置文件中引入并使用该插件:

import { defineConfig } from 'vite';
import requireTransform from 'vite-plugin-require-transform';

export default defineConfig({
  plugins: [
    requireTransform({
      fileRegex: /.js$|.vue$/
    })
  ]
});

方法2:第三方包内部使用了 require 语法

如果你的项目本身没有使用 require 语法,或者方法1未能解决问题,可能是因为第三方包内部使用了 require 语法。此时,可以使用 vite-plugin-commonjs 插件。

首先,安装插件:

npm install vite-plugin-commonjs -S

然后,在 Vite 配置文件中引入并使用该插件:

import { defineConfig } from 'vite';
import commonjs from 'vite-plugin-commonjs';

export default defineConfig({
  plugins: [commonjs()],
  build: {
    commonjsOptions: {
      transformMixedEsModules: true
    }
  }
});

总结

通过以上两种方法,可以有效解决 Vite 打包后遇到的 require is not defined 问题。方法1适用于项目代码中直接使用 require 语法的情况,而方法2则解决了第三方包中使用 require 语法的问题。希望这些解决方案能帮助到遇到同样问题的开发者。

转载自:https://juejin.cn/post/7381333086120460324
评论
请登录