我正在尝试创建一个看起来像这样的键值对
{
'static/default/js/index': './app_main/js/index.js',
'static/default/js/util': './app_util/js/util.js'
}
以输出文件的路径为键,源为值。
问题是当我在循环中调试脚本时,我正在遍历目录,我看到了预期的正确键值对。但是当我尝试在循环外查看它时,它返回一个空对象。这是我的目录结构的样子
这是我的代码
var fs = require('fs');
var path = [
{
type: 'js',
inputPath: [
'./app_util/js/',
'./app_main/js/'
],
outputPath: 'dist/static/default/js'
}
];
function getFilePath(path) {
var out = {};
path.forEach(obj => {
obj.inputPath.forEach(dirNname =>{
fs.readdir(dirNname, (err, fileNames) => {
if (err) {
console.log(err); // eslint-disable-line no-console
return;
}
fileNames.forEach(fileName => {
out[obj.outputPath] = dirNname+fileName;
console.log(out); // eslint-disable-line no-console
});
})
})
})
return out;
}
var x = getFilePath(path);
//this returns an empty object
console.log(x); // eslint-disable-line no-console
任何想法我可能做错了什么?感觉就像我错过了一些简单的东西
var fs = require('fs');
var path = [
{
type: 'js',
inputPath: [
'./app_util/js/',
'./app_main/js/'
],
outputPath: 'dist/static/default/js'
}
];
function getFilePath(path) {
var out = {};
path.forEach(obj => {
obj.inputPath.forEach(dirNname => {
var fileNames = fs.readdirSync(dirNname)
fileNames.forEach(fileName => {
out[obj.outputPath] = dirNname + fileName;
console.log(out); // eslint-disable-line no-console
});
})
})
return out;
}
var x = getFilePath(path);
//this returns an empty object
console.log('final result is: ', x); // eslint-disable-line no-console
我使用了 readdirSync。这工作正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句