试图将父内容复制到子目录时会引发以下错误。有人知道我在哪里做错了吗?有没有更好的方法来完成此任务?
main.js
const fse = require('fs-extra');
const copyDirectories = function(data) {
let source ='/Users/Test';
let destination = '/Users/Test/tmp';
fse.copy(source, destination)
.then(() => console.log('Copy completed!'))
.catch( err => {
console.log('An error occured while copying the folder.')
return console.error(err)
})
return data;
}
错误
Cannot copy '/Users/Test' to a subdirectory of itself, '/Users/Test/tmp'.
答案 0 :(得分:0)
首先,子目录是父目录的内容。那么,子目录如何将自身存储在其中?因此,我认为解决此问题的好方法是复制父目录的所有内容,但要复制所有内容的子目录除外。
答案 1 :(得分:0)
这是隐含的,您不会将/ Users / Test / tmp的内容复制到/ Users / Test / tmp / tmp中(这是递归错误,会引发您收到的错误消息)
您有两个选择:
我认为没有其他选择。
选项2的代码示例:
const fs = require("fs");
const fse = require('fs-extra');
const copyDirectories = (data, source, destination) => {
fs.readdirSync(source,{withFileTypes: true}).filter(
(entry) => {
const fullsrc = path.resolve(source + path.sep + entry.name);
const fulldest= path.resolve(destination + path.sep + entry.name);
if(entry.isDirectory && fullsrc !== destination)
fse.copySync(fullsrc, fulldest);
else if(!entry.isDirectory)
fs.copySync(fullsrc, fulldest);
return true;
}
);
return data;
}
一些评论:
data
参数,但是无论如何我还是保留了它