Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion mock/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
19 changes: 11 additions & 8 deletions mock/mock-server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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, {
Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion vue.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down