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 で書いていけば素直に組めます。