From the node manual I see that I can get the directory of a file with
__dirname, but from the REPL this seems to be undefined. Is this a misunderstanding on my side or where is the error?
$ node > console.log(__dirname) ReferenceError: __dirname is not defined at repl:1:14 at REPLServer.eval (repl.js:80:21) at Interface.<anonymous> (repl.js:182:12) at Interface.emit (events.js:67:17) at Interface._onLine (readline.js:162:10) at Interface._line (readline.js:426:8) at Interface._ttyWrite (readline.js:603:14) at ReadStream.<anonymous> (readline.js:82:12) at ReadStream.emit (events.js:88:20) at ReadStream._emitKey (tty.js:320:10)
__dirname is only defined in scripts. It's not available in REPL.
try make a script
and run it:
you will see
Added background explanation:
__dirname means 'The directory of this script'. In REPL, you don't have a script. Hence,
__dirname would not have any real meaning.
Building on the existing answers here, you could define this in your REPL:
__dirname = path.resolve(path.dirname(''));
__dirname = path.resolve();
Or @Jthorpe's alternatives:
__dirname = process.cwd(); __dirname = fs.realpathSync('.'); __dirname = process.env.PWD