You've already forked DataMate
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
const express = require('express');
|
|
const fs = require('fs-extra');
|
|
const path = require('path');
|
|
const bodyParser = require('body-parser');
|
|
const { genExpressSession } = require('./mock-core/session-helper.cjs');
|
|
const {
|
|
setHeader,
|
|
sendJSON,
|
|
strongMatch,
|
|
errorHandle,
|
|
} = require('./mock-middleware/index.cjs');
|
|
|
|
|
|
const { loadAllMockModules } = require('./mock-core/module-loader.cjs');
|
|
const { log } = require('./mock-core/util.cjs');
|
|
|
|
const app = express();
|
|
const router = express.Router();
|
|
|
|
const argv = require('minimist')(process.argv.slice(2));
|
|
const deployUrl = argv['deploy-url'] || '/';
|
|
const deployPath = argv['deploy-path'] || '/';
|
|
const port = argv.port || 8002;
|
|
const env = argv.env || 'development';
|
|
|
|
// app静态文件实际目录
|
|
const deployAppPath = path.join(__dirname, deployPath);
|
|
preStartCheck(deployAppPath);
|
|
|
|
app.use(setHeader);
|
|
|
|
// 提供静态文件服务
|
|
app.use(deployUrl, express.static(deployAppPath));
|
|
app.use(bodyParser.json({limit: '1mb'}));
|
|
app.use(bodyParser.urlencoded({ extended: false, limit: '1mb' }));
|
|
app.use(sendJSON);
|
|
app.use(strongMatch);
|
|
app.use(genExpressSession());
|
|
|
|
const mockDir = path.join(__dirname, '/mock-seed');
|
|
loadAllMockModules(router, mockDir);
|
|
app.use(deployUrl, router);
|
|
app.use(errorHandle);
|
|
|
|
app.get('/', (req, res) => {
|
|
res.sendFile('default response', { root: deployAppPath });
|
|
});
|
|
|
|
app.listen(port, function() {
|
|
log(`Mock server is running at http://localhost:${port}${deployUrl} in ${env} mode`);
|
|
})
|
|
|
|
function preStartCheck(deployAppPath) {
|
|
if(!fs.existsSync(deployAppPath)) {
|
|
log(`Error: The path ${deployAppPath} does not exist. Please build the frontend application first.`, 'error');
|
|
process.exit(1);
|
|
}
|
|
} |