You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

33 lines
966 B

const fs = require('fs');
const path = require('path');
const Bean = require('../utils/index.js');
// 控制器收集规则
const routes = fs.readdirSync(path.resolve(__dirname));
const controler = {};
routes.forEach(route => {
if (fs.statSync(path.resolve(__dirname, route)).isDirectory()) {
const deep = Bean.readFileDeep(path.resolve(__dirname, route)).file;
controler[route] = {};
deep.forEach(file => {
Object.keys(require(file)).forEach(key => {
if (Object.keys(controler[route]).includes(key)) {
let str = "注意有相同的控制器:{" + route + ':' + key + '}';
throw str
}
})
controler[route] = {
...controler[route],
...require(file)
}
})
}
if (fs.statSync(path.resolve(__dirname, route)).isFile()) {
if (route !== 'index.js') {
controler[route.slice(0, -3)] = require(path.resolve(__dirname, route));
}
}
})
module.exports = controler