Обратный вызов fsPromises.writeFile не вызывается в Node v12.13.0 - PullRequest
1 голос
/ 28 октября 2019

По какой-то причине обратный вызов для fs.promises не вызывается, но в документации не упоминается, что он вызывается только при возникновении ошибки, что, как я предполагаю, произойдет ...

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

Это происходит (или не происходит, lol) в версии 12.13.0 Node.

Кто-нибудь знает, что это за дело?

1 Ответ

2 голосов
/ 28 октября 2019

Версия fs.promises асинхронных вызовов возвращает обещания. Они не принимают обратные вызовы. Используйте обычную версию fs, если хотите использовать обратный вызов.

Вы можете увидеть прямо здесь, в документе , что нет возможности передать обратный вызов для версий fsPromisesAPI.

Вы должны делать это так:

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

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

Или, внутри функции async, вы можете использовать try/catch и await вместо .then() и.catch().

...