Azure Functions での Node.js アプリのトラブルシューティング
重要
ページの上部にあるセレクターで Node.js プログラミング モデルを選ぶと、この記事の内容は変わります。 v4 モデルは一般提供されており、JavaScript と TypeScript の開発者にとって、より柔軟で直感的なエクスペリエンスが得られるように設計されています。 v3 と v4 の違いの詳細については、移行ガイドを参照してください。
この記事では、Node.js 関数アプリでの一般的なシナリオのトラブルシューティングに関するガイドを提供します。
Azure portal の [問題の診断と解決] タブは、アプリケーションに関連して発生する可能性がある問題を監視および診断するのに役立つリソースです。 また、診断に基づいて、問題への考えられる解決策も提供します。 詳しくは、Azure 関数アプリの診断に関する記事をご覧ください。
もう 1 つの便利なリソースは、Azure portal の Application Insights インスタンスの [ログ] タブで、カスタム KQL クエリを実行できます。 次に示すクエリは、過去 1 日間にアプリで発生したエラーと警告を表示する方法の例です。
let myAppName = "<your app name>";
let startTime = ago(1d);
let endTime = now();
union traces,requests,exceptions
| where cloud_RoleName =~ myAppName
| where timestamp between (startTime .. endTime)
| where severityLevel > 2
それらのリソースで問題が解決しない場合は、以降のセクションで特定のアプリケーションの問題に関するアドバイスを提供します。
関数が見つからない
ログで次のいずれかのエラーが見つかった場合:
HTTP トリガーが見つかりません。
ジョブ機能が見つかりません。 ジョブのクラスとメソッドをパブリックにしてみてください。 バインディング拡張機能 (Azure Storage、ServiceBus、Timers など) を使っている場合は、スタートアップ コードで拡張機能の登録メソッドを呼び出していることを確認します (builder.AddAzureStorage()、builder.AddServiceBus()、builder.AddTimers() など)。
次の修正を試してください。
- ローカル環境で実行している場合は、Azure Functions Core Tools v4.0.5382 以降を使っていることを確認します。
- Azure で実行しているとき:
Azure Functions Runtime バージョン 4.25 以降を使っていることを確認します。
Node.js v18 以降を使っていることを確認します。
アプリ設定
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERROR
をtrue
に設定します。 この設定は、すべてのモデルの v4 アプリに対して推奨され、すべてのエントリ ポイント エラーがアプリケーション分析情報ログに確実に表示されます。 詳細については、「Azure Functions のアプリケーション設定のリファレンス」をご覧ください。関数アプリのログでエントリ ポイントのエラーを調べます。 次に示すクエリは、過去 1 日間にアプリで発生したエントリ ポイント エラーを表示する方法の例です。
let myAppName = "<your app name>"; let startTime = ago(1d); let endTime = now(); union traces,requests,exceptions | where cloud_RoleName =~ myAppName | where timestamp between (startTime .. endTime) | where severityLevel > 2 | where message has "entry point"
- アプリが必要なフォルダー構造を備えており、ルートに host.json が含まれ、function.json ファイルを含むフォルダーが関数ごとにあることを確認します。
undici 要求がコンストラクターではない
関数アプリのログに次のエラーが記録される場合:
System.Private.CoreLib: 関数を実行中に例外が発生しました: Functions.httpTrigger1。 System.Private.CoreLib: 結果: 失敗例外: undici_1.Request はコンストラクターではありません
Node.js バージョン 18.x 以降を使っていることを確認します。
Azure Functions Runtime を検出できなかった
関数アプリのログに次のエラーが記録される場合:
警告: Azure Functions Runtime を検出できませんでした。 Switching "@azure/functions" package to test mode - not all features are supported. ("@azure/functions" パッケージのテスト モードへの切り替え - すべての機能がサポートされているわけではありません。)
package.json
ファイルで applicationinsights
への参照を調べて、バージョンが ^2.7.1
以降であることを確認します。 バージョンを更新した後、npm install
を実行します
Microsoft からサポートを受ける
次のいずれかの方法で、Microsoft からさらにサポートを受けることができます。
- Azure Functions Node.js リポジトリで既知のイシューを検索します。 該当するイシューが見つからない場合は、新しいイシューを作成して、発生したことをお知らせください。
- このガイドを使って問題を診断できない場合は、Microsoft のサポート エンジニアがお客様のアプリケーションに関する問題の診断をお手伝いできます。 Microsoft からは、さまざまなサポート プランが提供されています。 Azure portal の関数アプリ ページの [サポートとトラブルシューティング] セクションで、サポート チケットを作成してください。