# node:fs

O módulo `node:fs` é a API de sistema de arquivos do Node.js. Aplicações Node.js usam esse módulo para entrada e saída (I/O) de arquivos: ler, escrever, atualizar e excluir arquivos e diretórios. No Azion Runtime, o build aceita `import fs from "node:fs"`, mas uma function com deploy feito não consegue escrever arquivos com ele, e o objeto `fs` expõe 8 membros.

As leituras síncronas vão para um sistema de arquivos em memória que o build preenche a partir da configuração `build.memoryFS` do [azion.config.js](/pt-br/documentacao/devtools/cli/azion-config-js/). Um caminho relativo é resolvido a partir da raiz, então `./hello.txt` é lido como `/hello.txt`. Um caminho que o build não incorporou lança um erro `ENOENT`.

> **nota**
>
> Com `azion dev`, os caminhos de `fs` são resolvidos na pasta `.edge/storage/` do projeto, `fs.writeFileSync` não é uma função e o objeto `fs` expõe 40 membros.

---

## Métodos

A tabela lista o que cada chamada retorna ou lança em uma function com deploy feito, em caminhos que o build não incorporou:

| Chamada                                                        | Resultado em uma function com deploy feito                                                    |
| -------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `fs.readFileSync('./hello.txt')`                               | Lança `Error: ENOENT: no such file or directory, fs.readFileSync call for path '/hello.txt'`. |
| `fs.writeFileSync('/tmp/my-file.txt', 'x')`                    | Lança `Error: unsupported`. Um `fs.readFileSync` posterior do mesmo caminho lança `ENOENT`.   |
| `fs.existsSync('/')`                                           | Retorna `false`.                                                                              |
| `fs.readFile('./hello.txt', callback)`                         | Passa `Error: missing storage annotation: readfile './hello.txt'` para o callback.            |
| `readFile('./hello.txt')` de `node:fs/promises`                | Rejeita com `Error: missing storage annotation: readfile './hello.txt'`.                      |
| `writeFile('/tmp/my-file.txt', 'hello')` de `node:fs/promises` | Rejeita com `Error: missing storage annotation`.                                              |
| `readdir('/')` de `node:fs/promises`                           | Rejeita com `Error: missing storage annotation: readdir '/'`.                                 |
| `stat('/')` de `node:fs/promises`                              | Rejeita com `Error: missing storage annotation: stat '/'`.                                    |

---

## Recursos relacionados

- [APIs do Node.js](/pt-br/documentacao/devtools/runtime/node.md): Os módulos do Node.js que o Azion Runtime resolve, com o comportamento de cada um.
- [azion.config.js](/pt-br/documentacao/devtools/cli/azion-config-js.md): As chaves de `build.memoryFS` que definem quais pastas o build injeta no sistema de arquivos em memória.
- [Object Storage API](/pt-br/documentacao/devtools/runtime/api-reference/storage.md): A API de runtime que uma function usa para ler e escrever objetos em um bucket.
- [Use APIs do Node.js com polyfills](/pt-br/documentacao/guias/desenvolvimento-de-aplicacoes/functions-e-runtime/use-polyfills.md): Como o build resolve APIs do Node.js por meio de polyfills em um projeto JavaScript.
