Important
ページの上部にあるセレクターで Node.js プログラミング モデルを選ぶと、この記事の内容は変わります。 v4 モデルは一般提供されており、JavaScript と TypeScript の開発者にとって、より柔軟で直感的なエクスペリエンスが得られるように設計されています。 v3 と v4 の違いの詳細については、移行ガイドを参照してください。
この記事では、Node.js 関数アプリの一般的なシナリオをトラブルシューティングするためのガイドを提供します。
Azure ポータルの [問題の診断と解決] タブは、アプリケーションに関連する可能性のある問題を監視および診断するのに役立つリソースです。 また、診断に基づいて問題に対する潜在的な解決策も提供します。 詳細については、「Azure Function app diagnostics」を参照してください。
もう 1 つの便利なリソースは、カスタム KQL クエリを実行できるように、Application Insights インスタンスのAzure ポータルの [ログ] タブです。 次のクエリ例は、過去 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 トリガーが見つかりません。
ジョブ関数が見つかりません。 ジョブクラスとメソッドを public に設定してみてください。 バインド拡張機能 (Azure Storage、ServiceBus、Timers など) を使用している場合は、スタートアップ コード (ビルダーなど) で拡張機能の登録メソッドを呼び出したことを確認してください。AddAzureStorage() ビルダー。AddServiceBus() ビルダー。AddTimers() など)。
次の修正を試してください。
- ローカルで実行する場合は、Azure Functions Core Tools v4.0.5382 以降を使用していることを確認してください。
- Azureで実行する場合:
ランタイム バージョン 4.25 以降Azure Functions使用していることを確認します。
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 はコンストラクターではありません
バージョン 22.x 以降 Node.js 使用していることを確認します。
Azure Functions ランタイムを検出できませんでした
関数アプリのログに次のエラーが表示される場合:
警告: Azure Functions ランタイムを検出できませんでした。 "@azure/functions" パッケージをテスト モードに切り替える - すべての機能がサポートされているわけではありません。
package.json ファイルでapplicationinsightsへの参照を確認し、バージョンが^2.7.1以上であることを確認します。 バージョンを更新した後、次を実行します。 npm install
HTTPストリームが動作しない
HTTPストリーミングが動作しない場合は:
- パッケージ
@azure/functionsバージョンが4.3.0以降であることを確認してください。 - Azure Functions のランタイム バージョンが 4.28 以降であることを確認してください。
-
app.setup({ enableHttpStream: true })が呼ばれているか確認してください。 - Verify
FUNCTIONS_REQUEST_BODY_SIZE_LIMITが大規模データに適切に設定されています。
フックが実行されない
フックが動いていない場合:
- プログラミングモデルv4を使っているか確認してください。
- フック登録の構文を確認してください:
app.hook.preInvocation()またはapp.hook.appStart()。 - 関数定義の前にフックを登録しているか確認してください。
- トリガーフィルタリングの見直し、フックは特定の関数タイプだけに動作すべきかどうか確認してください。
TypeScriptコンパイルの問題
TypeScript特有の問題について:
ビルド失敗:
-
tsconfig.jsonが自分のビルド出力を正しくoutDir指しているか確認してください - v3モデルの
scriptFileが.jsではなく、コンパイル済みの.tsファイルを参照していることを確認してください。 - すべてのTypeScript依存関係がインストールされているか確認してください:
npm install --save-dev typescript @types/node
タイプエラー:
- 最新の型定義に対応するため、
@azure/functionsパッケージを更新します - 適切なインポートを使う:
import { app, HttpRequest, InvocationContext } from '@azure/functions' - 関数シグネチャが期待される型と一致するかどうか確認する
モジュール解決の問題
モジュールエラーが見つからない:
- すべての依存関係がインストールされていることを確認するために
npm installを実行してください - デプロイメントパッケージにフォルダ
node_modules存在しているか確認してください - ES モジュールの場合、ファイル名で
.mjs拡張子を使用するか、package.jsonに"type": "module"があることを確認してください。 - TypeScriptコンパイル後に相位インポートパスが正しいか確認してください
環境および構成の問題
環境変数が欠けている点:
- ローカル開発のために変数を追加して
local.settings.json - Azure portal でクラウド デプロイ用のアプリケーション設定を設定する
-
process.env["VARIABLE_NAME"]を使って値にアクセスする
ログの問題:
- 機能固有のログには
context.log()ではなくconsole.log()を使います - Application Insightsの接続文字列が設定されているか確認してください
- フィルタリングのためにログレベルを
host.jsonで確認してください
Microsoftからヘルプを取得する
次のいずれかの方法で、Microsoftからさらにヘルプを取得できます。
- Azure Functions Node.js リポジトリで既知の問題を検索します。 問題が表示されない場合は、新しい問題を作成し、発生した内容をお知らせください。
- このガイドを使用して問題を診断できない場合は、Microsoftサポート エンジニアがアプリケーションの問題の診断に役立ちます。 Microsoftでは、さまざまなサポート プランが提供されます。 Azure ポータルの関数アプリ ページの [サポート + トラブルシューティング] セクションでサポート チケットを作成します。
次のステップ
Azure Functions の Microsoft Q&A ページ - Azure Functions Node.js 開発者ガイド