我需要读取一批文件,并将文件名制成JSON数组。 this.moduleFiles.modulename = modules下面的代码不正确。
var fs = require("fs");
var loadRoute = {
path : './api/modules/',
moduleFiles : {},
listDir : function(dir){
console.log(dir);
var fileList = fs.readdirSync(dir,'utf-8');
for(var i=0;i<fileList.length;i++) {
var stat = fs.lstatSync(dir + fileList[i]);
if (stat.isDirectory()) {
this.listDir(dir + fileList[i] + '/');
} else {
this.loadRoute(dir + fileList[i]);
}
}
},
loadRoute : function(routeFile){
// console.log('~~~~~~~~~~');
console.log(routeFile);
let modulename = routeFile.substring(0,routeFile.lastIndexOf('.'));
modulename = modulename.substr(modulename.lastIndexOf('/') + 1)
let modules = require('./modules/' + modulename);
this.moduleFiles.modulename = modules
},
init : function(path){
this.path = path?path:this.path;
this.listDir(this.path);
return this.moduleFiles;
}
};
let x = loadRoute.init();
console.log(x);
我只会得到
{ modulename: {..} } }
预期结果应该
{user: {...}, dep: {...}}
usr和dep是来自文件名的模块名。有什么建议吗?非常感谢!
答案 0 :(得分:0)
如果要从目录中获取所有模块,请使用npm软件包require-all
listDir : function(dir){
this.moduleFiles = require('require-all')({
dirname : dir,
filter : /(.+routes)\.js$/, // some filter if you want
excludeDirs : /^\.(git|svn)$/,
recursive : true
});
}
答案 1 :(得分:0)
this.moduleFiles [{variable}] =模块,则可以通过this.moduleFiles。{variable}
获得this.moduleFiles.modulename =与this.moduleFiles ['modulename']相同的模块 所以你无法得到想要的东西