0

我正在构建一个 node.js 程序,它复制一个目录然后编辑其中的文件。但是,我的代码尝试在复制完成之前编辑文件。我尝试添加await代码,但无法解决问题。以下是我的代码。

    const srcDir = `./old_dir`
    const destDir = `./new_dir`
    await fse.copy(srcDir, destDir, function (err) {
        if (err) throw err
    })

    // call the function that edits the files
    await create_page({info: queryparams})

我想等到复制目录完成,然后调用create_page。但是,以下代码在完成复制目录之前调用 create_page,这会导致“没有这样的文件或目录”的错误。

4

2 回答 2

1

fs-extra的文档中:

如果未通过回调,所有异步方法都将返回一个 Promise。

由于您将回调传递给该copy方法,因此await不会“等待”异步操作完成。所以删除回调参数:

const srcDir = `./old_dir`
const destDir = `./new_dir`
await fse.copy(srcDir, destDir);
// call the function that edits the files
await create_page({info: queryparams})

如果您想要在错误发生时重新抛出错误之外的任何其他内容,请将await代码包装在一个try...catch块中。

于 2021-07-22T06:04:07.070 回答
0

添加@trincot 答案的替代方案,您还可以使用copySync(src, dest[, options])等待任务完成的方法。

于 2021-07-22T06:07:28.660 回答