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

Pri*_*Nom 4 filesystems fs node.js promise

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

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

这在 Node.js 版本 12.13.0 上发生(或没有发生,哈哈)。

有人知道这是什么交易吗?

jfr*_*d00 5

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

您可以在文档中看到这里没有选项可以为 API 的 fsPromises 版本传递回调。

你应该这样做:

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

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

或者,在async函数内部,您可以使用try/catchandawait代替.then()and .catch()