NodeJS给我警告



当我运行此“测试”时:

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

    if (fs.existsSync(dir)) {
      console.log(`deleting ${dir}`);
      await fs.rmdir(dir);
    }
  });
});

好吧,我几乎会同意,使用没有回调的异步函数是不好的(因为只有在cb内您才能确定地知道它发生了,然后继续下去...

...如果不是我有意使用ES7 async / await 的话,因为它们使它同步,所以我可以使用我得到的任何东西...(在这种特殊情况下,我可以避开rmdirSync,但这不是我的意思...)

,所以我的问题:如何消除此类警告?

–以有意义的方式,当使用异步/等待时...
–处理返回值(例如const r = ...中的内容)不被识别为“回调处理” ...

最佳答案

fs.rmdir不返回promise对象,因此该代码会因赃物而失败。您必须使用promisify核心模块中的库或node.js util方法来使它散布

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

做这个

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)
   }
}

只要确保您同意

编辑:声明了一个变量,以保存@bergi建议的uti.promisify(fs.rmdir)的值

编辑:使用try .. catch块添加错误处理

08-07 13:16