Create a temp directory for your app in Node.js
Waldek Mastykarz
Posted on May 23, 2021
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}`);
}
}
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.
Posted on May 23, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.