微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript、Node.JS:等到复制文件夹,然后编辑其中的文件异步、等待

如何解决JavaScript、Node.JS:等到复制文件夹,然后编辑其中的文件异步、等待

我正在构建一个 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,导致“没有这样的文件或目录”的错误

解决方法

来自 fs-extra 的文档:

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

由于您将回调传递给 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 块中。

,

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。