Javascript 误导性“;不建议在不回调的情况下调用异步函数”;警告

Javascript 误导性“;不建议在不回调的情况下调用异步函数”;警告,javascript,node.js,asynchronous,async-await,fs,Javascript,Node.js,Asynchronous,Async Await,Fs,NodeJS给了我一个警告 (节点:32600)[DEP013]弃用警告:调用异步 不推荐使用不带回调的函数 当我运行此“测试”时: describe('whatever', () => { it('test simple', async () => { const dir = './build/fileTests'; if (fs.existsSync(dir)) { console.log(`deleting ${dir}`); aw

NodeJS给了我一个警告

(节点:32600)[DEP013]弃用警告:调用异步 不推荐使用不带回调的函数

当我运行此“测试”时:

describe('whatever', () => {
  it('test simple', async () => {
    const dir = './build/fileTests';

    if (fs.existsSync(dir)) {
      console.log(`deleting ${dir}`);
      await fs.rmdir(dir);
    }
  });
});
好吧,我几乎同意,不使用回调就使用异步函数是不好的(因为只有在cb中,您才能确定,它发生了,等等)

…若不是因为我有意使用,因为它们使它同步,所以我可以使用我得到的任何东西…(在这种特殊情况下,我可以回避,但这不是我的重点…)

那么我的问题是:我怎样才能摆脱这样的警告呢?

–以有意义的方式,在使用async/Wait时。。。
–处理返回值,如在
const r=…
中,不会将其识别为“回调处理”…

fs.rmdir不会返回承诺对象,这就是为什么此代码在swag中失败。您必须使用库或
util
核心模块中的node.js
promisify
方法来承诺它

注意:如果对
fs
核心模块中的其他async方法使用相同的方法,它将失败

这样做

const util = require("util");
const fs = require("fs");
const removeDir = util.promisify(fs.rmdir);

const rmDir = async () => {
   try {
      await removeDir("directory_name");
   } catch(ex) {
      console.error(ex)
   }
}
你一定要答应

Edit:声明了一个变量来保存@bergi建议的
uti.promisify(fs.rmdir)
的值


编辑:使用
try..catch
block

async/await
添加错误处理。不要使异步代码同步。它可能看起来像,但实际上不是。这使我认为回调是异步客户端。您应该将
util.promisify
调用放在
rmDir
函数之外,并存储r结果。已经做了更改。谢谢@Bergi。