Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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

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 に書き換えましょう!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?