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]