トランスパイラ、コンパイラ、ソースマップおよびNode.jsエージェント
Node.jsエージェントは、TypeScriptなどのJavaScriptにコンパイルされる言語で書かれたアプリケーションをサポートします。Node.jsエージェントは、JavaScriptのみに組み込めますが、アプリケーションをJavaScriptにコンパイルするようトランスパイラを設定した場合、TypeScriptも使用できます。
注記
結果として生成されるJavaScriptとソースが一致しない場合があります。そのため、報告されるメタデータ(脆弱性のコード行
やファイル名
など)は、ソースではなくコンパイルした結果を参照します。
TypeScriptなどの一部の言語では、実行前にコードのプリコンパイルが必要なものがあります。このような場合、Node.jsエージェントは、アプリケーションのコンパイル済エントリポイントを指す必要があります。
これを行うには、--import
オプションを使用してNode.jsエージェントを設定します。
scripts: { "test": "...", "start": "...", "contrast": "node --import @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
エントリを追加します。