如何使用从api调用接收的响应路径创建多个目录



我从前端收到一个对象列表,我想用存储在键值对中的值创建多个目录。到目前为止,我尝试了这种方法,但它不起作用。

filercv=layerorder.map(layer=>{
return `layers/${layer.name}`;
})
console.log(filercv)
var count 
function makeAllDirs(root, list) {
return list.reduce((p, item) => {
return p.then(() => {
console.log(item)
console.log(root)

return mkdirp(path.join(root,item));
});
}, Promise.resolve());
}
// usage

makeAllDirs(basePath,filercv).then(() => {
console.log('yes')
}).catch(err => {
// error here
console.log(err)
});
};
//layerorder
layerorder=[{"name":"bodies"},{"name":"Top"}]

但当我运行此代码时,在layers目录中只创建了一个文件夹,即bodies。

mkdirp()中检查,也许您的路径解析到其他地方,所以检查最终构建的路径,或者recursive标志丢失:fs.mkdir(路径(

另外,尝试async/await,这将在process.cwd():中创建文件夹

const fs = require('fs');
const path = require('path');

function mkdirp(dir) {
return new Promise((resolve, reject) => {
console.log('--creating dir: ', path.resolve(dir));
fs.mkdir(dir, {
recursive: true
}, (err) => {
if (err) reject(err);
resolve();
});
});
}

//layerorder
const layerorder = [{
"name": "bodies"
}, {
"name": "Top"
}];
const filercv = layerorder.map(layer => {
return `layers/${layer.name}`;
});
console.log('dirs: ', filercv);
// check path
let basePath = process.cwd();
async function makeAllDirs() {
try {
await Promise.all(filercv.map(dir => {
console.log(`root: ${basePath}, item: ${dir}`);
return mkdirp(path.join(basePath, dir))
}));
console.log('yes');
} catch (err) {
console.log('no', err);
}
}
makeAllDirs();

最新更新