fsPromises.writeFile Node v12.13.0 中未调用回调

fsPromises.writeFile callback not being called in Node v12.13.0

无论出于何种原因,fs.promises 的回调都没有被调用,但文档中没有提到只有在出现错误时才会调用它,而这正是我假设会发生的...

fsp.writeFile('test.txt', 'callback doesnt work', 'utf8', (error) => {
  console.log('callback is never called')
  if (error) console.error(error)
})

这在 Node 12.13.0 版本上正在发生(或未发生,哈哈)。

有人知道这是怎么回事吗?

fs.promises 版本的异步调用 return 承诺。他们不接受回调。如果您想使用回调,请使用常规 fs 版本。

您可以看到 right here in the doc 没有选项可以为 API 的 fsPromises 版本传递回调。

你应该这样做:

const fsp = require('fs').promises;

fsp.writeFile('test.txt', 'promise works', 'utf8').then(() => {
    console.log("write successful");
}).catch(err => {
    console.error(err);
});

或者,在 async 函数内,您可以使用 try/catchawait 而不是 .then().catch()