• English日本語한국어
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、 を参照してください。

問題を作成する

ES モジュール アプリケーションでの Node.js エージェントの使用

ES モジュールを使用して Node.js アプリケーションのコードを管理している場合、Node.js エージェントを使用してそれらのアプリケーションを監視できるようになりました。

注意

Node.js APM エージェントによるES モジュールアプリケーションでのインストルメンテーションのサポートは、実験的なものです。インストルメンテーションを登録するために、エージェントは実験的な Node.js 機能に依存しています。ES モジュール ローダー用の Node.js API が安定するまで、重大な変更が発生する可能性があります。

概要

v12.0.0 より前は、Node.js は、CommonJS モジュールを使用したコードの管理のみを公式にサポートしていました。CommonJS モジュールは、次の例のように、 module.exports } ステートメントとrequire()ステートメントを使用してコードを管理します。

'use strict'
const bar = require('./bar')
function echoBar() {
console.log('this is bar:', bar)
}
module.exports = {
echoBar
}

Node.js v12.0.0 以降、ECMAScript モジュール (ES モジュール/「ESM」) のサポートが追加されました。

require()module.exportsの代わりに、ES モジュールはimportexportステートメントを次のように使用します。

'use strict'
import bar from './bar.js'
export function echoBar() {
console.log('this is bar:', bar)
}

ES モジュールは、コード管理のための ECMAScript の公式標準であり、ブラウザーやその他の JS ランタイムがパッケージを管理する標準的な方法です。進化する Node.js エコシステムを現在および将来的にサポートするために、エージェントは、エージェントのバージョン 9.1.0 の時点で、ES モジュールを使用して記述されたアプリケーションの計測をサポートします。Node.js APM エージェントは、CommonJS アプリケーションも引き続きサポートします。

重要

ES モジュール アプリケーションで Node.js APM エージェントを使用する場合にサポートされる Node.js の最小バージョンは v16.12.0 です。

エージェントのセットアップ

エージェントが ES モジュール アプリケーションを正常に計測するには、最初に Node.js エージェントをインストールする必要があります (インストール ドキュメントを参照)。エージェントをインストールしたら、以下のセクションの構成に進みます。

構成

アプリケーションで構成ファイルを使用してエージェントを構成する場合、構成ファイルの拡張子を.js } ではなく.cjsに更新する必要があります。

エージェントは CommonJS モジュールとして作成されます。 require()を使用して、起動時に構成ファイルを読み込みます。ファイル拡張子を変更することで、エージェントの構成ファイルを CommonJS モジュールとして明示的にラベル付けし、エージェントがそれを正常にロードできるようにします。

ファイル拡張子を更新しないと、エージェントの起動時に次のエラーが表示される場合があります。

New Relic for Node.js is disabled due to an error:
Error [ERR_REQUIRE_ESM]: require() of ES module /path/to/your/application/newrelic.js from /path/to/your/application/node_modules/newrelic/lib/config/index.js not supported.

ES モジュールローダーを追加する

エージェントが ES モジュール エコシステム内でインストルメンテーションを適切に適用するには、アプリケーションの呼び出しにエージェントとともにエージェントの ES モジュール ローダーを含める必要があります。Node.js --experimental-loader CLI 引数を使用してローダーをアプリケーションに追加できます。

bash
$
node --experimental-loader newrelic/esm-loader.mjs -r newrelic your-program.js

カスタムインストゥルメンテーション

Node.js APM エージェントは、ES モジュール アプリケーションへのカスタム インストルメンテーションの追加をサポートしています。API のインストルメンテーション登録メソッドのほとんどを使用して、ES モジュール アプリケーションでインストルメンテーションを作成できます。ES モジュールのインポートの性質上、 newrelic.instrumentLoadedModuleをサポートできません。ES モジュール バインディングは割り当て可能ではありません。これにより、エージェントは、モジュールが読み込まれた後に、モジュールのエクスポートされたメンバーをインストルメンテーションに置き換えることができなくなります。

ES モジュール アプリケーションでカスタム インストルメンテーション API を使用する方法のデモを見るには、GitHub のを確認してください。

もっと詳しく知る

Copyright © 2023 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.