Node.js の基本的な API である fs には、 Promise 対応モジュールがあります。
fs Promises API
Node.js の API ドキュメント: fs Promises API
The
fs.promisesAPI provides an alternative set of asynchronous file system methods that returnPromiseobjects rather than using callbacks. The API is accessible viarequire('fs').promises.
今まで、
const fs = require('fs')
としていたところを、
const fs = require('fs').promises
とするだけで、 async / await 対応のコードを書くことができるようになります。
ファイルの読み込み
BEFORE:
fs.readFile('some_file.txt', 'utf8', function (error, content) {
if (error) {
console.error(error)
} else {
// content を使った処理
}
})
AFTER:
try {
const content = await fs.readFile('some_file.txt', 'utf8')
} catch (error) {
console.error(error)
}
// content を使った処理
ファイルの書き込み
BEFORE:
const content = 'test'
fs.writeFile('some_file.txt', content, function (error) {
if (error) {
console.error(error)
}
})
AFTER:
try {
const content = 'test'
await fs.writeFile('some_file.txt', content)
} catch (error) {
console.error(error)
}
import 文で読み込む場合
--experimental-modules や -r esm、または Babel などで ESM に対応させる場合は、 import 文で次のように書けます。
import { promises as fs } from 'fs'
簡単ですね!
皆さんも、コールバック書くのをやめて Promise の async / await に書き換えましょう!