javascript 复制文件夹在节点使用cp功能

myzjeezk  于 2023-01-29  发布在  Java
关注(0)|答案(4)|浏览(280)

我尝试使用node.js cp功能复制文件夹及其所有内容,如下所示

fs.cp('D:\\Developer\\insomniac-beta\\template', dir_path, {recursive: true});

然而,它抛给我这个错误

node:internal/validators:232
    throw new ERR_INVALID_ARG_TYPE(name, 'Function', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "cb" argument must be of type function. Received undefined
    at makeCallback (node:fs:191:3)
    at Object.cp (node:fs:2848:14)
    at D:\Developer\igbot\generate_config.js:30:13
    at FSReqCallback.oncomplete (node:fs:193:23) {
  code: 'ERR_INVALID_ARG_TYPE'
}

这怎么可能呢?我没有电话打到cb?

lnvxswe2

lnvxswe21#

如果你不想使用带有回调的异步复制,你可以使用同步版本。

fs.cpSync(sourceDir, destDir, {recursive: true});
tcbh2hod

tcbh2hod2#

缺少一个参数。如文档中所述,fs.cp是一个异步函数,它接受回调函数

sqserrrh

sqserrrh3#

最后一个参数必须是回调函数

fs.cp('D:\\Developer\\insomniac-beta\\template', dir_path, (err)=>{ 
// handle error
})
vshtjzan

vshtjzan4#

看起来您使用的是promises API,但是您没有展示如何导入模块。下面是当前Node LTS(v 16.x)的示例:
参考:fsPromises.cp(src, dest[, options])

import {promises as fs} from 'fs';

// ...

await fs.cp(sourceDir, destDir, {recursive: true});

下面是一个完整的、自包含的示例,它创建了一个示例dir结构,复制它,验证副本,并清理示例数据:
example.mjs
x一个一个一个一个x一个一个二个x

相关问题