Skip to main content

トランスパイラ、コンパイラ、ソースマップおよびNode.jsエージェント

Node.jsエージェントは、TypeScriptなどJavaScriptにコンパイルされる言語で書かれたアプリケーションをサポートします。Node.jsエージェントは、JavaScriptのみに組み込まれますが、アプリケーションをJavaScriptにコンパイルするようトランスパイラを設定した場合、TypeScriptも使用できます。

注記

結果として生成されるJavaScriptとソースが一致しない場合があります。そのため、報告されるメタデータ(脆弱性のコード行ファイル名など)は、元のソースではなくコンパイルした結果を参照します。

TypeScriptなど一部の言語では、ランタイム前にコードのプリコンパイルが必要なものがあります。このような場合、Node.jsエージェントは、アプリケーションのコンパイル済エントリポイントを指す必要があります。

これを行うには、-rオプションを使用してNode.jsエージェントを設定します。

scripts: {
    "test": "...",
    "start": "...",
    "contrast": "node -r @contrast/agent /path/to/transpiled/entrypoint.js"
}

ソースマップ

ソースマップを使用すると、TypeScriptのソースとトランスパイルされたJavaScript間で対応する行番号を確認できます。

ソースマップを使用するには、YAML設定でBabel変換(enable_babel)と変換キャッシュ(rewrite_cache)を有効にする必要があります。

agent:
  node:
    rewrite_cache:
      enable: true
      path: ./cache
    enable_babel: true

有効にすると、エージェントはロードされているソースと同じディレクトリにあるソースマップ(mapファイル)を検索します(例:/home/app/index.jsファイルがロードされると、/home/app/index.js.mapが検索されます)。

ソースマップがまだない場合は、ソースマップを生成するために必要なフラグを使用して再コンパイルする必要があります。これはトランスパイラによって異なりますので、お使いのトランスパイラのオプションを確認してください。例えば、TypeScriptの場合は、--source-mapフラグをTypeScriptコンパイラ(tsc)に追加するか、tsconfig.json”compilerOptions”セクションに”sourceMap”: trueエントリを追加します。