DEV Community

Waldek Mastykarz
Waldek Mastykarz

Posted on • Originally published at blog.mastykarz.nl on

Create a temp directory for your app in Node.js

Create a temp directory for your app in Node.js

When working with Node.js, you might need to create a temporary folder for your app. Here's how to do it.

Node.js is a convenient platform for all kinds of purposes: from hosting web apps to running tools or scripts to automate your work. What's really cool about Node.js is that it's just JavaScript. If you know JavaScript from building front-ends, you can reuse your existing knowledge for building web apps, tools, and scripts.

Creating temp directories in Node.js

When building apps in Node.js you might need to create a temp directory for your app. Here is how to do it.

const fs = require('fs');
const os = require('os');
const path = require('path');

let tmpDir;
const appPrefix = 'my-app';
try {
  tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix));
  // the rest of your app goes here
}
catch {
  // handle error
}
finally {
  try {
    if (tmpDir) {
      fs.rmSync(tmpDir, { recursive: true });
    }
  }
  catch (e) {
    console.error(`An error has occurred while removing the temp folder at ${tmpDir}. Please remove it manually. Error: ${e}`);
  }
}

Enter fullscreen mode Exit fullscreen mode

Let's get through it step by step. You start, by loading the necessary dependencies: fs, os, and path. Next, you define a variable tmpDir which we'll use to store the full path to our temp directory. you need to define it outside the try..catch clause so that you can access it in the finally clause to delete the folder when you no longer need it. Next, you create the temp directory for our app.

You start by retrieving the location of the system temp folder using the os.tmpdir() function. You combine it with a prefix for our app using path.join(). This is optional, but it makes it easier to locate our app's temp directory if needed. Then, you use the fs.mkdtempSync() function, which adds a random string to the specified prefix (in our case the system's temp folder and our app's prefix) and creates a folder on that path. After you created the folder, you can start working with it.

An important part of working with temp folders is cleaning them up when they're no longer needed. To do this properly, you need to wrap your logic in a try..catch..finally statement. Your code goes in try. If an error occurs, you can handle it in the catch segment. Finally, no matter if your logic succeeded or failed, Node.js will execute the code in the finally block where you should remove your app's temp directory and all its files using fs.rmSync(tmpDir, { recursive: true }). You also need to keep in mind, that deleting the temp directory can fail. If that happens, you should print the full path to the temp directory, so that users can remove it themselves.

Oldest comments (0)