commonjs では __dirname
と __filename
でファイルのパスを取得できますが ES Modules では使えません。
今まで同等の API が存在していなかったのですが、Node.js v20.11.0 で import.meta.dirname
と import.meta.filename
が追加されました。
今までの ES Modules ではディレクトリ名を取得するために以下のようなコードを書いていました。
import url from "url";
import path from "path";
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
これからは import.meta.dirname
でディレクトリ名を取得できます。
const __dirname = import.meta.dirname;
CommonJS から ES Modules に移行する際には、__dirname
と __filename
を import.meta.dirname
と import.meta.filename
に置き換えるだけで移行できるようになります。よく遭遇する問題だったので嬉しいですね。