diff --git a/mock/index.js b/mock/index.js index e14f94ed6c..59e82ed769 100644 --- a/mock/index.js +++ b/mock/index.js @@ -53,7 +53,7 @@ export function mockXHR() { // for mock server const responseFake = (url, type, respond) => { return { - url: new RegExp(`/mock${url}`), + url: new RegExp(`${url}`), type: type || 'get', response(req, res) { res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond)) diff --git a/mock/mock-server.js b/mock/mock-server.js index 4c4cb2af83..60408f4313 100644 --- a/mock/mock-server.js +++ b/mock/mock-server.js @@ -2,15 +2,16 @@ const chokidar = require('chokidar') const bodyParser = require('body-parser') const chalk = require('chalk') const path = require('path') +const express = require('express') const mockDir = path.join(process.cwd(), 'mock') -function registerRoutes(app) { +function registerRoutes(router) { let mockLastIndex const { default: mocks } = require('./index.js') for (const mock of mocks) { - app[mock.type](mock.url, mock.response) - mockLastIndex = app._router.stack.length + router[mock.type](mock.url, mock.response) + mockLastIndex = router.stack.length } const mockRoutesLength = Object.keys(mocks).length return { @@ -30,17 +31,19 @@ function unregisterRoutes() { module.exports = app => { // es6 polyfill require('@babel/register') + const router = express.Router() // parse app.body // https://expressjs.com/en/4x/api.html#req.body - app.use(bodyParser.json()) - app.use(bodyParser.urlencoded({ + router.use(bodyParser.json()) + router.use(bodyParser.urlencoded({ extended: true })) - const mockRoutes = registerRoutes(app) + const mockRoutes = registerRoutes(router) var mockRoutesLength = mockRoutes.mockRoutesLength var mockStartIndex = mockRoutes.mockStartIndex + app.use(/^\/mock/, router) // watch files, hot reload mock server chokidar.watch(mockDir, { @@ -50,12 +53,12 @@ module.exports = app => { if (event === 'change' || event === 'add') { try { // remove mock routes stack - app._router.stack.splice(mockStartIndex, mockRoutesLength) + router.stack.splice(mockStartIndex, mockRoutesLength) // clear routes cache unregisterRoutes() - const mockRoutes = registerRoutes(app) + const mockRoutes = registerRoutes(router) mockRoutesLength = mockRoutes.mockRoutesLength mockStartIndex = mockRoutes.mockStartIndex diff --git a/vue.config.js b/vue.config.js index 4244cfc8ac..d0931bb84a 100644 --- a/vue.config.js +++ b/vue.config.js @@ -47,7 +47,7 @@ module.exports = { } } }, - after: require('./mock/mock-server.js') + before: require('./mock/mock-server.js') }, configureWebpack: { // provide the app's title in webpack's name field, so that