【Node.js】v24.2で追加されたimport.meta.main

こんにちは、フリーランスエンジニアの太田雅昭です。

import.meta.main

import.meta.mainは、もともとDenoなどで使用できる独自使用だったのですが、Node.js v24.2.0で正式対応されています。

https://nodejs.org/docs/latest-v24.x/api/esm.html

たとえば以下のような場合

// test.mjs

export function test(){
  return 'abc';
}


if(import.meta.main){
  console.log(test());
}

直接実行した場合はimport.meta.mainがtrueとなり、console.logが実行されます。

node test.mjs

// abcが出力される

しかしライブラリとしてimportした場合は、import.meta.mainはfalseとなり、console.logは実行されません。

これはあたかもpythonでの__name__ == "__main__"のような振る舞いです。サクッとテストしたりする時などに役立ちます。

TypeScriptでは@types/nodeが必要

TypeScriptで使用する場合は、何も入れないと下記のようになります。

プロパティ 'main' は型 'ImportMeta' に存在しません。ts(2339)

そのため@types/nodeを入れる必要があります。