fix: 修复mock无法使用问题

This commit is contained in:
kailong321200875 2023-12-10 10:11:14 +08:00
parent 81d2dc6a43
commit 319aaef7ee
12 changed files with 148 additions and 134 deletions

View File

@ -0,0 +1,18 @@
import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'
const modules = import.meta.glob('./**/*.mock.ts', {
import: 'default',
eager: true
})
const mockModules: any[] = []
Object.keys(modules).forEach(async (key) => {
if (key.includes('_')) {
return
}
mockModules.push(...(modules[key] as any))
})
export function setupProdMockServer() {
createProdMockServer(mockModules)
}

View File

@ -1,15 +1,15 @@
import { defineMock } from 'vite-plugin-mock-dev-server'
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
import { MockMethod } from 'vite-plugin-mock'
const delay = 1000 const timeout = 1000
export default defineMock([ export default [
// 分析页统计接口 // 分析页统计接口
{ {
url: '/mock/analysis/total', url: '/mock/analysis/total',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {
@ -24,9 +24,9 @@ export default defineMock([
// 用户来源 // 用户来源
{ {
url: '/mock/analysis/userAccessSource', url: '/mock/analysis/userAccessSource',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -42,9 +42,9 @@ export default defineMock([
// 每周用户活跃量 // 每周用户活跃量
{ {
url: '/mock/analysis/weeklyUserActivity', url: '/mock/analysis/weeklyUserActivity',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -62,9 +62,9 @@ export default defineMock([
// 每月销售额 // 每月销售额
{ {
url: '/mock/analysis/monthlySales', url: '/mock/analysis/monthlySales',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -84,4 +84,4 @@ export default defineMock([
} }
} }
} }
]) ] as MockMethod[]

View File

@ -78,8 +78,8 @@ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/department/list', url: '/mock/department/list',
method: 'GET', method: 'get',
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {
@ -90,8 +90,8 @@ export default [
}, },
{ {
url: '/mock/department/table/list', url: '/mock/department/table/list',
method: 'GET', method: 'get',
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {
@ -103,9 +103,9 @@ export default [
}, },
{ {
url: '/mock/department/users', url: '/mock/department/users',
method: 'GET', method: 'get',
delay: 1000, timeout: 1000,
body: ({ query }) => { response: ({ query }) => {
const { pageSize } = query const { pageSize } = query
// 根据pageSize来创建数据 // 根据pageSize来创建数据
const mockList: any = [] const mockList: any = []
@ -135,9 +135,9 @@ export default [
// 保存接口 // 保存接口
{ {
url: '/mock/department/user/save', url: '/mock/department/user/save',
method: 'POST', method: 'post',
delay: 1000, timeout: 1000,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'success' data: 'success'
@ -147,8 +147,8 @@ export default [
// 删除接口 // 删除接口
{ {
url: '/mock/department/user/delete', url: '/mock/department/user/delete',
method: 'POST', method: 'post',
body: ({ body }) => { response: ({ body }) => {
const ids = body.ids const ids = body.ids
if (!ids) { if (!ids) {
return { return {
@ -166,9 +166,9 @@ export default [
// 保存接口 // 保存接口
{ {
url: '/mock/department/save', url: '/mock/department/save',
method: 'POST', method: 'post',
delay: 1000, timeout: 1000,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'success' data: 'success'
@ -178,8 +178,8 @@ export default [
// 删除接口 // 删除接口
{ {
url: '/mock/department/delete', url: '/mock/department/delete',
method: 'POST', method: 'post',
body: ({ body }) => { response: ({ body }) => {
const ids = body.ids const ids = body.ids
if (!ids) { if (!ids) {
return { return {

View File

@ -1,6 +1,6 @@
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
const delay = 1000 const timeout = 1000
const dictObj: Recordable = { const dictObj: Recordable = {
importance: [ importance: [
@ -23,9 +23,9 @@ export default [
// 字典接口 // 字典接口
{ {
url: '/mock/dict/list', url: '/mock/dict/list',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: dictObj data: dictObj
@ -35,9 +35,9 @@ export default [
// 获取某个字典 // 获取某个字典
{ {
url: '/mock/dict/one', url: '/mock/dict/one',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [

View File

@ -1,15 +1,15 @@
import { faker } from '@faker-js/faker' import { faker } from '@faker-js/faker'
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
const delay = 1000 const timeout = 1000
export default [ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/menu/list', url: '/mock/menu/list',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {

View File

@ -1,13 +1,13 @@
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
const delay = 600000 const timeout = 600000
export default [ export default [
{ {
url: '/mock/request/1', url: '/mock/request/1',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'request-1' data: 'request-1'
@ -16,9 +16,9 @@ export default [
}, },
{ {
url: '/mock/request/2', url: '/mock/request/2',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'request-2' data: 'request-2'
@ -27,9 +27,9 @@ export default [
}, },
{ {
url: '/mock/request/3', url: '/mock/request/3',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'request-3' data: 'request-3'
@ -38,9 +38,9 @@ export default [
}, },
{ {
url: '/mock/request/4', url: '/mock/request/4',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'request-4' data: 'request-4'
@ -49,9 +49,9 @@ export default [
}, },
{ {
url: '/mock/request/5', url: '/mock/request/5',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: 'request-5' data: 'request-5'
@ -60,9 +60,9 @@ export default [
}, },
{ {
url: '/mock/request/expired', url: '/mock/request/expired',
method: 'GET', method: 'get',
delay: 0, timeout: 0,
body: () => { response: () => {
return { return {
code: 401, code: 401,
message: 'token expired' message: 'token expired'

View File

@ -2,7 +2,7 @@ import { faker } from '@faker-js/faker'
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
import { toAnyString } from '@/utils' import { toAnyString } from '@/utils'
const delay = 1000 const timeout = 1000
const adminList = [ const adminList = [
{ {
@ -1146,9 +1146,9 @@ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/role/list', url: '/mock/role/list',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: adminList data: adminList
@ -1157,9 +1157,9 @@ export default [
}, },
{ {
url: '/mock/role/table', url: '/mock/role/table',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {
@ -1172,9 +1172,9 @@ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/role/list2', url: '/mock/role/list2',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: testList data: testList
@ -1183,9 +1183,9 @@ export default [
}, },
{ {
url: '/mock/role/table', url: '/mock/role/table',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {

View File

@ -2,7 +2,7 @@ import { faker } from '@faker-js/faker'
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
import { toAnyString } from '@/utils' import { toAnyString } from '@/utils'
const delay = 1000 const timeout = 1000
const count = 100 const count = 100
const baseContent = const baseContent =
@ -213,9 +213,9 @@ export default [
// 树形列表接口 // 树形列表接口
{ {
url: '/mock/example/treeList', url: '/mock/example/treeList',
method: 'GET', method: 'get',
delay, timeout,
body: ({ query }) => { response: ({ query }) => {
const { title, pageIndex, pageSize } = query const { title, pageIndex, pageSize } = query
const mockList = treeList.filter((item) => { const mockList = treeList.filter((item) => {
if (title && item.title.indexOf(title) < 0) return false if (title && item.title.indexOf(title) < 0) return false
@ -236,9 +236,9 @@ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/example/list', url: '/mock/example/list',
method: 'GET', method: 'get',
delay, timeout,
body: ({ query }) => { response: ({ query }) => {
const { title, pageIndex, pageSize } = query const { title, pageIndex, pageSize } = query
const mockList = List.filter((item) => { const mockList = List.filter((item) => {
if (title && item.title.indexOf(title) < 0) return false if (title && item.title.indexOf(title) < 0) return false
@ -259,9 +259,9 @@ export default [
// 保存接口 // 保存接口
{ {
url: '/mock/example/save', url: '/mock/example/save',
method: 'POST', method: 'post',
delay, timeout,
body: ({ body }) => { response: ({ body }) => {
if (!body.id) { if (!body.id) {
List = [ List = [
Object.assign(body, { Object.assign(body, {
@ -290,8 +290,8 @@ export default [
// 详情接口 // 详情接口
{ {
url: '/mock/example/detail', url: '/mock/example/detail',
method: 'GET', method: 'get',
body: ({ query }) => { response: ({ query }) => {
const { id } = query const { id } = query
for (const example of List) { for (const example of List) {
if (example.id === id) { if (example.id === id) {
@ -306,8 +306,8 @@ export default [
// 删除接口 // 删除接口
{ {
url: '/mock/example/delete', url: '/mock/example/delete',
method: 'POST', method: 'post',
body: ({ body }) => { response: ({ body }) => {
const ids = body.ids const ids = body.ids
if (!ids) { if (!ids) {
return { return {
@ -330,9 +330,9 @@ export default [
}, },
{ {
url: '/mock/card/list', url: '/mock/card/list',
method: 'GET', method: 'get',
delay, timeout,
body: ({ query }) => { response: ({ query }) => {
const { name, pageIndex, pageSize } = query const { name, pageIndex, pageSize } = query
const mockList = cardList.filter((item) => { const mockList = cardList.filter((item) => {
if (name && item.name.indexOf(name) < 0) return false if (name && item.name.indexOf(name) < 0) return false

View File

@ -1,6 +1,6 @@
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
const delay = 1000 const timeout = 1000
const List: { const List: {
username: string username: string
@ -29,8 +29,8 @@ export default [
// 列表接口 // 列表接口
{ {
url: '/mock/user/list', url: '/mock/user/list',
method: 'GET', method: 'get',
body: ({ query }) => { response: ({ query }) => {
const { username, pageIndex, pageSize } = query const { username, pageIndex, pageSize } = query
const mockList = List.filter((item) => { const mockList = List.filter((item) => {
@ -53,9 +53,9 @@ export default [
// 登录接口 // 登录接口
{ {
url: '/mock/user/login', url: '/mock/user/login',
method: 'POST', method: 'post',
delay, timeout,
body: ({ body }) => { response: ({ body }) => {
const data = body const data = body
let hasUser = false let hasUser = false
for (const user of List) { for (const user of List) {
@ -78,9 +78,9 @@ export default [
// 退出接口 // 退出接口
{ {
url: '/mock/user/loginOut', url: '/mock/user/loginOut',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: null data: null

View File

@ -1,14 +1,14 @@
import { SUCCESS_CODE } from '@/constants' import { SUCCESS_CODE } from '@/constants'
const delay = 1000 const timeout = 1000
export default [ export default [
// 获取统计 // 获取统计
{ {
url: '/mock/workplace/total', url: '/mock/workplace/total',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: { data: {
@ -22,9 +22,9 @@ export default [
// 获取项目 // 获取项目
{ {
url: '/mock/workplace/project', url: '/mock/workplace/project',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -77,9 +77,9 @@ export default [
// 获取动态 // 获取动态
{ {
url: '/mock/workplace/dynamic', url: '/mock/workplace/dynamic',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -114,9 +114,9 @@ export default [
// 获取团队信息 // 获取团队信息
{ {
url: '/mock/workplace/team', url: '/mock/workplace/team',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [
@ -151,9 +151,9 @@ export default [
// 获取指数 // 获取指数
{ {
url: '/mock/workplace/radar', url: '/mock/workplace/radar',
method: 'GET', method: 'get',
delay, timeout,
body: () => { response: () => {
return { return {
code: SUCCESS_CODE, code: SUCCESS_CODE,
data: [ data: [

View File

@ -27,6 +27,7 @@
"icon": "esno ./scripts/icon.ts" "icon": "esno ./scripts/icon.ts"
}, },
"dependencies": { "dependencies": {
"@faker-js/faker": "^8.3.1",
"@iconify/iconify": "^3.1.1", "@iconify/iconify": "^3.1.1",
"@iconify/vue": "^4.1.1", "@iconify/vue": "^4.1.1",
"@vueuse/core": "^10.7.0", "@vueuse/core": "^10.7.0",
@ -59,7 +60,6 @@
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^18.4.3", "@commitlint/cli": "^18.4.3",
"@commitlint/config-conventional": "^18.4.3", "@commitlint/config-conventional": "^18.4.3",
"@faker-js/faker": "^8.3.1",
"@iconify/json": "^2.2.153", "@iconify/json": "^2.2.153",
"@intlify/unplugin-vue-i18n": "^1.5.0", "@intlify/unplugin-vue-i18n": "^1.5.0",
"@purge-icons/generated": "^0.10.0", "@purge-icons/generated": "^0.10.0",
@ -109,7 +109,7 @@
"vite": "5.0.6", "vite": "5.0.6",
"vite-plugin-ejs": "^1.7.0", "vite-plugin-ejs": "^1.7.0",
"vite-plugin-eslint": "^1.8.1", "vite-plugin-eslint": "^1.8.1",
"vite-plugin-mock-dev-server": "^1.4.0", "vite-plugin-mock": "^2.9.6",
"vite-plugin-progress": "^0.0.7", "vite-plugin-progress": "^0.0.7",
"vite-plugin-purge-icons": "^0.10.0", "vite-plugin-purge-icons": "^0.10.0",
"vite-plugin-style-import": "2.0.0", "vite-plugin-style-import": "2.0.0",

View File

@ -6,13 +6,12 @@ import VueJsx from '@vitejs/plugin-vue-jsx'
import progress from 'vite-plugin-progress' import progress from 'vite-plugin-progress'
import EslintPlugin from 'vite-plugin-eslint' import EslintPlugin from 'vite-plugin-eslint'
import { ViteEjsPlugin } from "vite-plugin-ejs" import { ViteEjsPlugin } from "vite-plugin-ejs"
// import { viteMockServe } from 'vite-plugin-mock' import { viteMockServe } from 'vite-plugin-mock'
import PurgeIcons from 'vite-plugin-purge-icons' import PurgeIcons from 'vite-plugin-purge-icons'
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite" import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite"
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-import' import { createStyleImportPlugin, ElementPlusResolve } from 'vite-plugin-style-import'
import UnoCSS from 'unocss/vite' import UnoCSS from 'unocss/vite'
import MockDevServerPlugin from 'vite-plugin-mock-dev-server'
// https://vitejs.dev/config/ // https://vitejs.dev/config/
const root = process.cwd() const root = process.cwd()
@ -68,19 +67,16 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
svgoOptions: true svgoOptions: true
}), }),
PurgeIcons(), PurgeIcons(),
// viteMockServe({ viteMockServe({
// ignore: /^\_/, ignore: /^\_/,
// mockPath: 'mock', mockPath: 'mock',
// localEnabled: !isBuild, localEnabled: !isBuild,
// prodEnabled: isBuild, prodEnabled: isBuild,
// injectCode: ` injectCode: `
// import { setupProdMockServer } from '../mock/_createProductionServer' import { setupProdMockServer } from '../mock/_createProductionServer'
// setupProdMockServer() setupProdMockServer()
// ` `
// }),
MockDevServerPlugin({
prefix: '/mock'
}), }),
ViteEjsPlugin({ ViteEjsPlugin({
title: env.VITE_APP_TITLE title: env.VITE_APP_TITLE