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 に置き換えるだけで移行できるようになります。よく遭遇する問題だったので嬉しいですね。