少しはまったのでメモしておきます。
環境はWindowsですが、他のOSでも同じかもしれません。
path.js
var path = require('path');
var filePath = process.cwd();
filePath = path.resolve(filePath, './path.js');
console.log(filePath);
これを、コマンド
> node path.js
で、実行すると、正しいパスが得られるのですが、VSCode のF5キーで実行すると、カレントディレクトリが、ホームディレクトリになる様子で、正しいパスになりませんでした。
次のようにすると、実行しているスクリプトファイルのパスが正しく得られます。
path.js
var path = require('path');
var filePath = process.argv[1];
console.log(filePath);
また、path.dirname(filePath);
で、親ディレクトリのパスが得られます。
さらには、__dirname
には、スクリプトファイルのあるパスが入っています。
参考
node.js で絶対パスや相対パスを取得する方法 npm __dirname · GitHub
https://gist.github.com/uupaa/da42698d6b2d2cbb3cca