Javascript 无法将文件复制到Node.js中的未知目录
大家好,在上面的代码中,我只想复制“toFiles”文件夹中不存在的文件。Javascript 无法将文件复制到Node.js中的未知目录,javascript,node.js,npm,filesystems,Javascript,Node.js,Npm,Filesystems,大家好,在上面的代码中,我只想复制“toFiles”文件夹中不存在的文件。 但是我有一个问题,如果我尝试用fsPath npm包来做这件事,它会发出这样的错误:“Error:enoint:没有这样的文件或目录”。通常,如果没有父文件夹,包应该创建父文件夹。但不知怎么的,它不起作用。有人能看管一下代码并尝试修复它吗?非常感谢。文件夹不存在,您可以先使用mkdir创建文件夹: const { resolve } = require("path"); const prompt =
但是我有一个问题,如果我尝试用fsPath npm包来做这件事,它会发出这样的错误:“Error:enoint:没有这样的文件或目录”。通常,如果没有父文件夹,包应该创建父文件夹。但不知怎么的,它不起作用。有人能看管一下代码并尝试修复它吗?非常感谢。文件夹不存在,您可以先使用
mkdir
创建文件夹:
const { resolve } = require("path");
const prompt = require('prompt');
const fsPath = require('fs-path');
// Get files from Dir
const getFiles = dir => {
const stack = [resolve(dir)];
const files = [];
while (stack.length) {
dir = stack.pop();
fs.readdirSync(dir).forEach(item => {
const path = resolve(dir, item);
(fs.statSync(path).isDirectory() ? stack : files).push(path);
});
}
return files;
};
prompt.start();
// Prompt for Dir
prompt.get(['from', 'to'], async(err, res) => {
if (err) {
return console.log(err);
} else {
let fromFiles = await getFiles(String(res.from));
let toFiles = await getFiles(String(res.to));
let isEqual = JSON.stringify(fromFiles) == JSON.stringify(toFiles);
let out = res.to;
if (isEqual) {
return console.log('Both folders are same. Try it with an other folder!');
} else {
let dif = [];
// Check differences -> to path
await fromFiles.forEach(path => {
if (!toFiles.includes(path)) {
dif.push(path)
}
});
dif.forEach(difference => {
fsPath.copy(`${difference}`, `${out + difference.split(__dirname)[1]}`, (error) => {
if (error) {
console.log(error);
} else {
console.log('Successfully copied item.')
}
});
});
}
}
});
我知道文件夹不存在,但fsPath应该自己做。如何在代码中实现您的功能?谢谢,它有一个递归创建目录的方法。也许你不需要这么做,因为。
fsPath.mkdir(String(res.to), { recursive: true }, (err) => {
if (err) throw err;
// code
});