【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を入れる必要があります。