Node.jsにESMファイルが直接実行されたかを確認できる機能が追加

これまで、Pythonの__name__ == "__main__"のように、Node.jsでCommonJSのスクリプトが直接実行されたのかモジュールとして読み込まれたかを判定するには、require.main === moduleが使われてきました。
if (require.main === module) { // 直接実行されたときにだけ実行するコード}一方で、ESModulesの場合は、次のように記述できました。
import url from "url";
const self = url.fileURLToPath(import.meta.url);
if (process.argv [1] === self) { // 直接実行されたときにだけ実行するコード}これは、実行されたファイルのパスと自身のパスを比較することで、直接実行されたかを判定するという手法ですが、判定のためにライブラリーのインポートが必要になるなどの問題点がありました。
Node.js v24.2.0では、より簡単に判定できるimport.meta.mainが追加されました。Node.js v24.2.0以降では、次のように簡単に判定できます。
if (import.meta.main) { // 直接実行されたときにだけ実行するコード}古いバージョンのNode.jsではこの新しい手法を使えませんが、Node.js v24.2.0以降を前提としたプロジェクトでは、 import.meta.main を採用するのがよいでしょう。
参考リンク
記事をシェア
フォローして最新情報を入手
Googleの優先ソースに追加すると、このサイトの記事をGoogleで見つけやすくなります。また、ぜひXやRSSフィードもフォローしてください。
おすすめ記事
-1.png&w=1080&q=75)
生まれた時から、母国語よりも先にJavaScriptを使っていました。ネットの海のどこにもいなくてどこにでもいます。
Webフロントエンドプログラマーとして、TypeScriptを用いたWebアプリやブラウザー拡張機能を制作。Xのシャドウバン検知ツール「Shadowban Scanner」やリンクカード復活ツール「Restore Link Card」を公開し、国内外のメディアで紹介されました。iGEM 2023ではJapan-UnitedチームのWikiを制作してGrand Prizeの獲得に貢献。ブログではXやSNSの最新ニュース、不具合の検証と対処法、フロントエンド開発の知見を発信しています。




![Node.jsの公式Webサイトのスクリーンショット。[どこでもJavaScriptを使おう]というタイトルと[Node.js®を入手]というボタンが表示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnodejs-website-top.png&w=3840&q=75)
![npmのパッケージの設定画面のスクリーンショット。[Trusted Publisher]セクションの[Select your publisher]に[GitHub Actions]と[GitLab CI/CD]の2つのボタンが表示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fnpm-trusted-publishing-settings.png&w=3840&q=75)

![[何を報告していますか?]というタイトルのダイアログで[スパム]にチェックが入っているスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-report-post-spam-selected.png&w=1920&q=75)

![Xの設定の[アクセシビリティ、表示、言語]>[表示]>[フォントサイズ]のスクリーンショット](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-android-font-size-settings.png&w=3840&q=75)
![Xの設定画面のスクリーンショット。[アクセシビリティ、表示、言語]>[データ利用の設定]の中のようすが示されている](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-data-saver-high-resolusion-image-settings.png&w=3840&q=75)
![ブロックユーザー確認ツール あなたをブロックしているユーザーを特定できます。あなたは何人ものユーザーに持続的な影響力や反響を与えているのか調べてみましょう。※本ツールはX(旧Twitter)社の**公式API**を利用して情報を取得します。 [Xにログインして確認を開始]](/_next/image/?url=%2Fapi%2Fmedia%2Ffile%2Fx-block-checker-phishing-campaign.png&w=3840&q=75)
