LoginSignup
27
16

More than 3 years have passed since last update.

fs Promises API でawaitを使ってファイル読み書きする

Last updated at Posted at 2019-07-26

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 return Promise objects rather than using callbacks. The API is accessible via require('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'

簡単ですね!

皆さんも、コールバック書くのをやめて Promiseasync / await に書き換えましょう!

27
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
16