Skip to content

How to use the Node.js fs module with async/await

Node.js built-in modules famously are not promise-based.

This is for historical reasons, as those modules were created before promises were a thing.

We’ve had promisify for quite some time, but I recently found out Node.js provides a new API that’s promise-based.

I thought it was new but it’s been introduced in Node.js 10 (2018, it’s been a while!).

At the moment it only works for the fs built-in module.

I’m not sure if this will be ported to other native modules soon.

Here’s how to use it:

import * as fs from 'node:fs/promises';

| Note the node:fs convention which can be now used to identify native modules

Now you can use any of the fs methods using promises or await:

const posts = await fs.readdir('content')

→ Get my Node.js Handbook

I wrote 21 books to help you become a better developer:

  • HTML Handbook
  • Next.js Pages Router Handbook
  • Alpine.js Handbook
  • HTMX Handbook
  • TypeScript Handbook
  • React Handbook
  • SQL Handbook
  • Git Cheat Sheet
  • Laravel Handbook
  • Express Handbook
  • Swift Handbook
  • Go Handbook
  • PHP Handbook
  • Python Handbook
  • Linux Commands Handbook
  • C Handbook
  • JavaScript Handbook
  • Svelte Handbook
  • CSS Handbook
  • Node.js Handbook
  • Vue Handbook
...download them all now!

Related posts that talk about node: