Skip to main content

ESMでNode.jsエージェントを使用する

Contrast Node.jsエージェントは、 Node.jsのサーバサイドアプリケーションでのECMAScriptモジュール(ESM)の使用を完全にサポートします。ESMは、クライアントサイドのJavaScriptコードをパッケージ化するための公式の標準仕様です。

ESMのサーバサイドアプリケーションを使用する場合、Contrast Node.jsエージェントを実行する方法は2つあります。

  • 実行中のコードがESMであり、ESMとして実行される必要があることを明示的にするために、MJSファイル拡張子を使用します。ファイル拡張子によるモジュールシステムの決定についての詳細は、 Node.jsのドキュメントを参照してください。

    MJS拡張子を使用すると、Node.jsはESMが記述されていることを認識し、JavaScriptはESMとして解析されます。CJSについても同様で、Node.jsはCJSファイル拡張子をCommonJSとして実行する必要があることを認識し、 JavaScriptはCommonJSとして解析されます。

  • もしくは、次のようにpackage.jsonに "type": "module"を指定することで、CommonJSではなくESMとしてNode.jsアプリケーションを実行できます。

    "main": "index.js", 
    "type": "module",

    これにより、Node.jsはpackage.json下のJSファイルをESMとして解析するようになります。それ以外の場合、デフォルトでは(または、"type": "commonjs"指定している場合)、Node.jsはJSファイルをCommonJSとして解析します。

ESM(または、ESMとCJSの両方の組み合わせ)を使用するアプリケーションにContrastエージェントを組み込む場合、エージェントを使用してアプリケーションを起動する方法が、Node.jsエンジンのバージョンと、アプリケーションがESMコードまたはモジュールを使用しているかによって異なります。

  • Node LTSのバージョンが18.19.0以降の場合:

    アプリケーションを起動するには、--importを使用します。

    node --import @contrast/agent app-main.mjs [app arguments]
  • Node LTSのバージョンが16.17.0以降18.19.0より前の場合:

    アプリケーションを起動するには、--loaderを使用します。

    node --loader @contrast/agent app-main.mjs [app arguments]
  • Node LTSのバージョンが16.17.0より前の場合: これは、ESM構文を使用しないアプリケーションでも使用できます。

    従来の方法を使用してアプリケーションを起動します。

    node -r @contrast/agent app-main.js [app arguments]