UNPKG

mockm

Version:

Analog interface server, painless parallel development of front and back ends.

79 lines (72 loc) 1.76 kB
"use strict"; const util = require(`./util/index.js`); function serverReplay({ allRoute, allRouteTest }) { const config = global.config; const { tool, business } = util; const { middleware, historyHandle, saveLog } = business; const { middlewares, middlewaresObj } = middleware.getJsonServerMiddlewares(); const { getHistory } = historyHandle(); const jsonServer = require(`@wll8/json-server`); const proxy = require(`http-proxy-middleware`).createProxyMiddleware; const serverReplay = jsonServer.create(); business.getHttpServer({ app: serverReplay, name: `replayPort` }); middleware.reWriteRouter({ app: serverReplay, routes: config.route }); serverReplay.use(middlewaresObj.corsMiddleware); serverReplay.use(proxy((pathname, req) => { const method = req.method.toLowerCase(); const fullApi = `${method} ${req.originalUrl}`; const history = getHistory({ fullApi }).data; if (history || config.hostMode) { // 当存在 history 则不进入代理 return false; } else if (allRouteTest({ allRoute, method, pathname })) { // 当没有 history, 则使用 noProxy 规则 return true; } else { // 当没有 history 也不匹配 noProxy 时, 则根据 replayProxy 规则 return config.replayProxy; } }, { target: `http://127.0.0.1:${config.port}/`, logLevel: `silent` })); serverReplay.use(middlewares); serverReplay.use(middleware.replayHistoryMiddleware({ business })); serverReplay.use((error, req, res, next) => { saveLog({ logStr: error.stack, logPath: config._errLog }); next(error); }); } module.exports = serverReplay;