Node.js 環境判別方法
JavaScript コードが Node.js 環境下で実行されているかどうかを判定するには、いくつかの方法があります。ここでは、最も一般的な方法をいくつか紹介します。
global オブジェクトのチェック
Node.js 環境では、global
オブジェクトが定義されています。このオブジェクトは、グローバル変数や関数を定義するためのものです。ブラウザ環境では、window
オブジェクトがグローバルオブジェクトとして使用されます。
if (typeof global !== 'undefined') {
console.log('This script is running under Node.js');
} else {
console.log('This script is running in a browser environment');
}
process オブジェクトのチェック
Node.js 環境では、process
オブジェクトが定義されています。このオブジェクトは、Node.js プロセスの情報を取得するためのものです。
if (typeof process !== 'undefined') {
console.log('This script is running under Node.js');
} else {
console.log('This script is running in a browser environment');
}
CommonJS モジュールシステムを使用している場合、module
オブジェクトが定義されています。このオブジェクトは、モジュールの情報を取得するためのものです。
if (typeof module !== 'undefined' && module.exports) {
console.log('This script is running under Node.js using CommonJS modules');
}
注意
- ECMAScript Modules (ESM) を使用している場合、
module
オブジェクトのチェックだけでは不十分なことがあります。ESM では、import
とexport
キーワードを使用してモジュールをインポートおよびエクスポートします。 - ブラウザ環境では、
global
オブジェクトがwindow
オブジェクトに置き換わるため、その点に注意してください。 - 上記の方法を組み合わせることで、より厳密な判定を行うことができます。
if (typeof global !== 'undefined') {
console.log('This script is running under Node.js');
} else {
console.log('This script is running in a browser environment');
}
解説
- ブラウザ環境では
global
オブジェクトは存在しないため、条件が偽となり、"This script is running in a browser environment" が出力されます。 - Node.js 環境では
global
オブジェクトが定義されているため、条件が真となり、"This script is running under Node.js" が出力されます。 typeof global !== 'undefined'
:global
オブジェクトが存在するかどうかをチェックします。
if (typeof process !== 'undefined') {
console.log('This script is running under Node.js');
} else {
console.log('This script is running in a browser environment');
}
module オブジェクトのチェック (CommonJS モジュールシステム)
if (typeof module !== 'undefined' && module.exports) {
console.log('This script is running under Node.js using CommonJS modules');
}
- ブラウザ環境や ECMAScript Modules (ESM) を使用している Node.js 環境では、少なくとも一つの条件が偽となるため、メッセージは出力されません。
- CommonJS モジュールシステムを使用している Node.js 環境では、両方の条件が真となり、"This script is running under Node.js using CommonJS modules" が出力されます。
module.exports
:module
オブジェクトのexports
プロパティが存在するかどうかをチェックします。
Node.js 環境かどうかを判定する方法は、主に上記の3つの方法が一般的ですが、他にもいくつかの方法があります。
環境変数のチェック
Node.js 環境では、特定の環境変数が設定されています。例えば、NODE_ENV
環境変数は、アプリケーションの環境(開発、テスト、本番など)を指定するために使用されます。
if (process.env.NODE_ENV) {
console.log('This script is running under Node.js');
}
特定のグローバル変数のチェック
Node.js 環境では、特定のグローバル変数が定義されていることがあります。例えば、__dirname
や __filename
変数は、ファイルのパスを取得するために使用されます。
if (typeof __dirname !== 'undefined') {
console.log('This script is running under Node.js');
}
- 環境変数やグローバル変数の存在は、Node.js 環境の特定のバージョンや設定によって異なる場合があります。
javascript node.js commonjs