Node.js のファイルを扱う fs モジュールで await async で非同期処理をするメモ
Node.js のファイルを扱う fs モジュールで await async で非同期処理をするメモです。
状況
const fs = require('fs');
fs.readFile('test.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
たまに Node.js でファイルを読み書きするコードを書くことがあるのですが、ついつい fs モジュールの通常のサンプルを参考にしてしまってコールバックで書いてしまいます。そして、色々なファイルを読み込んで複雑に書こうと思うときに、await async で非同期にかけなくて困ることがあります。
いつも、アレコレ調べて、あ、fs に Promise で非同期処理書けたんだよなーって毎度気づいて、時間を消費している気がするので、自分のためにまとめておきます。
fs モジュールで await async で非同期処理で書くとき
こんな感じで書きます。
const fs = require('fs').promises;
main = async () => {
try {
const data = await fs.readFile('test.txt', 'utf8');
console.log(data);
} catch (error) {
console.error(error)
}
}
main();
いつも忘れるのが、モジュール呼び出しで require('fs').promises で非同期まわりのモジュールが呼べるところですね。ここを忘れて、別のモジュール探そうとしちゃったりするんですよね。
ここさえ呼び出せれば、後は await async で書いていけば素直に組めます。