George Welder George Welder - 17 days ago 7
Javascript Question

Absolute paths in Node.js on macOS? No such file or directory

In Node.js, I am attempting to write into the

Documents
folder of the user (on macOS):

var logger = fs.createWriteStream('~/Documents/somefolderwhichexists/'+title+'.txt');


This gives me an error, but I am not sure what is wrong. The error says:


Uncaught Exception: Error: ENOENT: no such file or directory


How could I use an absolute path here? Or what is my mistake?

Answer

The ~ is a shorthand, to your home directory, expanded by the Bash shell. You need to use a fully defined path or get the current user name (or home path) dynamically.

To get the current user home path, ty this:

var home = require("os").homedir();
var path = home+'/Documents/somefolderwhichexists/'+title+'.txt';
var logger = fs.createWriteStream(path);