Node.js の基本的な API である fs
には、 Promise
対応モジュールがあります。
fs Promises API
Node.js の API ドキュメント: fs Promises API
The
fs.promises
API provides an alternative set of asynchronous file system methods that returnPromise
objects 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
に書き換えましょう!