Do you need to use path.join in node.js?

balupton picture balupton · Mar 18, 2012 · Viewed 87.3k times · Source

as everyone knows Windows does paths with backslashes where Unix does paths with forward slashes. node.js provides path.join() to always use the correct slash. So for example instead of writing the Unix only 'a/b/c' you would do path.join('a','b','c') instead.

However, it seems that despite this difference if you do not normalize your paths (e.g. using path.join) and just write paths like a/b/c node.js has no problem with running your scripts on Windows.

So is there any benefit over writing path.join('a','b','c') over 'a/b/c'? Both appear to work regardless of platform...

Answer

ebohlman picture ebohlman · Mar 21, 2012

Windows filesystems have no problem using either forward or backward slashes as path separators (this has been the case since back in the DOS days). The only real issue is that Windows command-line processors (or, more specifically, Windows-native command-line utilities) tend to interpret forward slashes as option specifiers rather than path components. Therefore, you need a backslashed path if you need to pass a path to a Windows command run as a subprocess. Also, Windows API calls (and methods from higher-level languages that call the Windows API) that return paths will use backslashes, so even if you aren't passing them to subprocesses, you'll need to normalize them.