Skip to main content

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]