Vite配置插件vite-plugin-mock

2,811 阅读1分钟

具体异常

启动或打包项目时终端报错

file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite-plugin-mock@3.0.0_esbuild@0.18.11_mockjs@1.1.0_vite@4.4.0/node_modules/vite-plugin-mock/dist/index.mjs:128
  if (!require.cache) {
  ^

ReferenceError: require is not defined
    at cleanRequireCache (file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite-plugin-mock@3.0.0_esbuild@0.18.11_mockjs@1.1.0_vite@4.4.0/node_modules/vite-plugin-mock/dist/index.mjs:128:3)
    at getMockConfig (file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite-plugin-mock@3.0.0_esbuild@0.18.11_mockjs@1.1.0_vite@4.4.0/node_modules/vite-plugin-mock/dist/index.mjs:157:3)
    at createMockServer (file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite-plugin-mock@3.0.0_esbuild@0.18.11_mockjs@1.1.0_vite@4.4.0/node_modules/vite-plugin-mock/dist/index.mjs:52:20)       
    at configResolved (file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite-plugin-mock@3.0.0_esbuild@0.18.11_mockjs@1.1.0_vite@4.4.0/node_modules/vite-plugin-mock/dist/index.mjs:246:16)        
    at file:///D:/file_webProject/myBolg/imlaoxie-blog-mater/blog-admin/node_modules/.pnpm/vite@4.4.0_@types+node@20.4.0_sass@1.63.6_terser@5.18.2/node_modules/vite/dist/node/chunks/dep-1d3a4915.js:65799:28

问题点定位

插件模块中的代码与vite基础环境不兼容异常报错
node_modules/vite-plugin-mock/dist/index.mjs

基础环境介绍

名称版本安装说明
win10专业版22H2------
nvm@1.1.11自行安装,待补充node版本管理
node@18.16.0nvm install 18---主力
npm@9.5.1npm install -g npm---
yarn@1.22.19npm install -g yarn---
pnpm@8.6.6npm install -g pnpm---主力包管理
vite@4.4.0pnpm i -D vite@4.4.0---
typescript@5.0.2pnpm i D typescript@5.0.2---
vue@3.3.4pnpm i vue@3.3.4---
mockjs@1.1.0pnpm i -D mockjs@1.1.0---
vite-plugin-mock@3.3.0pnpm i -D vite-plugin-mock@3.3.0---
包名@版本pnpm i ---待补充

解决办法

在报错文件头部加入两行代码

// 解决报错问题
import { createRequire } from 'module';
const require = createRequire(import.meta.url);