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

> Learn how to use the Node.js fs module with async/await through the promise-based node:fs/promises API, so you can await calls like fs.readdir() directly.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2022-05-19 | Topics: [Node.js](https://flaviocopes.com/tags/node/) | Canonical: https://flaviocopes.com/node-fs-await/

[Node.js](https://flaviocopes.com/nodejs/) built-in modules famously are not promise-based.

This is for historical reasons, as those modules were created before [promises](https://flaviocopes.com/javascript-promises/) were a thing.

We've had [promisify](https://flaviocopes.com/node-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:

```js
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](https://flaviocopes.com/javascript-async-await/):

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