ESMでNode.jsエージェントを使用する
Contrast Node.jsエージェントは、 Node.jsのサーバサイドアプリケーションでECMAScriptモジュール(ESM)を使用する場合に限定的なサポートを提供します。ESMはJavaScriptクライアントサイドのコードをパッケージ化するための標準仕様で、現在Node.jsはESMをサポートしています。
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として解析します。
注記
Contrast Node.jsエージェントは、ESMの条件付きエクスポート(Conditional Exports)をサポートしていません。
ECMAScriptでのエージェントによる検査は試験的であり、Contrastでサポートするには少なくともNode.jsのバージョン14.15.0が必要です。
ESM(またはESMとCJSの組み合わせ)を使用するアプリケーションにContrastエージェントを組み込む場合は、次のようにアプリケーションを起動します。
Usage: node --experimental-loader @contrast/agent/esm.mjs app-main.mjs [agent arguments] -- [app arguments]