Azure Functions에서 Node.js 앱 문제 해결

Important

이 문서의 내용은 페이지 상단의 선택기에서 선택한 Node.js 프로그래밍 모델에 따라 변경됩니다. v4 모델은 일반적으로 사용 가능하며 JavaScript 및 TypeScript 개발자를 위해 보다 유연하고 직관적인 환경을 제공하도록 설계되었습니다. 마이그레이션 가이드에서 v3과 v4의 차이점에 대해 자세히 알아봅니다.

이 문서에서는 Node.js 함수 앱의 일반적인 시나리오 문제를 해결하기 위한 가이드를 제공합니다.

Azure Portal문제 진단 및 해결 탭은 애플리케이션과 관련해서 발생할 수 있는 문제를 모니터링하고 진단하는 데 유용한 리소스입니다. 또한 진단에 따라 문제에 대한 잠재적 해결 방법을 제공합니다. 자세한 내용은 Azure 함수 앱 진단을 참조하세요.

또 다른 유용한 리소스는 사용자 지정 KQL 쿼리를 실행할 수 있는 Application Insights 인스턴스에 대한 Azure Portal로그 탭입니다. 다음 예제 쿼리는 이전에 발생한 앱에 대한 오류 및 경고를 보는 방법을 보여 줍니다.

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, 타이머 등)을 사용하는 경우 시작 코드에서 확장에 대한 등록 메서드(예: builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 등)를 호출했는지 확인합니다.

다음과 같이 수정해 보세요.

  • 로컬로 실행하는 경우 Azure Functions Core Tools v4.0.5382 이상을 사용하고 있는지 확인합니다.
  • Azure에서 실행하는 경우:
    • Azure Functions 런타임 버전 4.25 이상을 사용하고 있는지 확인합니다.

    • Node.js v18 이상을 사용하고 있는지 확인합니다.

    • 앱 설정 FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERRORtrue로 설정합니다. 이 설정은 모든 모델 v4 앱에 권장되며 모든 진입점 오류가 Application Insights 로그에 표시되는지 확인합니다. 자세한 내용은 Azure Functions에 대한 앱 설정 참조를 참조하세요.

    • 함수 앱 로그에서 진입점 오류를 확인합니다. 다음 예제 쿼리는 이전에 발생한 앱의 진입점 오류를 보는 방법을 보여 줍니다.

      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.요청이 생성자가 아닙니다.

Node.js 버전 18.x 이상을 사용하고 있는지 확인합니다.

Azure Functions 런타임을 검색하지 못했습니다.

함수 앱 로그에서 다음 오류가 발생하는 경우:

경고: Azure Functions 런타임을 검색하지 못했습니다. "@azure/functions" 패키지를 테스트 모드로 전환하면 모든 기능이 지원되지는 않습니다.

package.json 파일에서 applicationinsights에 대한 참조를 확인하고 버전이 ^2.7.1 이상인지 확인합니다. 버전을 업데이트한 후 npm install을 실행합니다.

Microsoft의 도움 받기

다음 방법 중 하나로 Microsoft에서 더 많은 도움을 받을 수 있습니다.

  • Azure Functions Node.js 리포지토리에서 알려진 문제를 검색합니다. 언급된 문제가 표시되지 않으면 새 문제를 만들고 어떤 결과가 나타났는지 알려주세요.
  • 이 가이드를 사용하여 문제를 진단할 수 없는 경우 Microsoft 지원 엔지니어가 애플리케이션 문제를 진단하는 데 도움을 줄 수 있습니다. Microsoft는 다양한 지원 계획을 제공합니다. Azure Portal의 함수 앱 페이지에 있는 지원 + 문제 해결 섹션에서 지원 티켓을 만듭니다.

다음 단계