Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
Bu makalenin içeriği, sayfanın üst kısmındaki seçicideki Node.js programlama modeli seçiminize göre değişir. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. Geçiş kılavuzunda v3 ve v4 arasındaki farklar hakkında daha fazla bilgi edinin.
Bu makalede, Node.js işlev uygulamalarında yaygın senaryolarda sorun gidermeye yönelik bir kılavuz sağlanır.
Azure portalındakiSorunları tanılama ve çözme sekmesi, uygulamanızla ilgili olası sorunları izlemek ve tanılamak için kullanışlı bir kaynaktır. Ayrıca tanıya dayalı olarak sorunlarınıza olası çözümler sunar. Daha fazla bilgi için bkz. Azure İşlev uygulaması tanılama.
Bir diğer yararlı kaynak da, özel KQL sorguları çalıştırabilmeniz için Application Insights örneğiniz için Azure portalındakiGünlükler sekmesidir. Aşağıdaki örnek sorgu, geçen gün uygulamanız için hataları ve uyarıları nasıl görüntüleyebileceğinizi gösterir:
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
Bu kaynaklar sorununuzu çözmediyse, aşağıdaki bölümlerde belirli uygulama sorunları için öneriler sağlanır:
İşlev bulunamadı
Günlüklerinizde aşağıdaki hatalardan herhangi birini görürseniz:
HTTP tetikleyicisi bulunamadı.
İş işlevi bulunamadı. İş sınıflarınızı ve yöntemlerinizi genel yapmayı deneyin. Bağlama uzantıları (ör. Azure Depolama, ServiceBus, Timers vb.) kullanıyorsanız, başlangıç kodunuzda uzantı(lar) için kayıt yöntemini çağırdığınızdan emin olun (ör. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() vb.).
Aşağıdaki düzeltmeleri deneyin:
- Yerel olarak çalışırken Azure İşlevleri Core Tools v4.0.5382 veya üzerini kullandığınızdan emin olun.
- Azure çalışırken:
Azure İşlevleri Runtime Sürüm 4.25 veya üzerini kullandığınızdan emin olun.
Node.js v18 veya üzerini kullandığınızdan emin olun.
Uygulama ayarını
FUNCTIONS_NODE_BLOCK_ON_ENTRY_POINT_ERRORolaraktrueayarlayın. Bu ayar tüm model v4 uygulamaları için önerilir ve tüm giriş noktası hatalarının uygulama içgörüleri günlüklerinizde görünür olmasını sağlar. Daha fazla bilgi için Azure İşlevleri için uygulama ayarları referansı kısmına bakın.Giriş noktası hataları için işlev uygulamanızın günlüklerini kontrol edin. Aşağıdaki örnek sorgu, geçen gün uygulamanız için giriş noktası hatalarını nasıl görüntüleyebileceğinizi gösterir:
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"
- Uygulamanızın, kök dizinde bir host.json ve her işlev için içinde bir function.json dosyası bulunan bir klasör içeren gerekli klasör yapısına sahip olduğundan emin olun.
Undici isteği bir oluşturucu değil
İşlev uygulaması günlüklerinizde aşağıdaki hatayı alırsanız:
System.Private.CoreLib: İşlev yürütülürken özel durum oluştu: Functions.httpTrigger1. System.Private.CoreLib: Sonuç: Başarısız Özel Durum: undici_1.Request bir oluşturucu değil
Node.js sürüm 22.x veya üzerini kullandığınızdan emin olun.
Azure İşlevleri çalışma zamanı algılanamadı
İşlev uygulaması günlüklerinizde aşağıdaki hatayı alırsanız:
UYARI: Azure İşlevleri çalışma zamanı algılanamadı. "@azure/işlevler" paketini test moduna geçirme - tüm özellikler desteklenmez.
package.json dosyanızda applicationinsights başvurusu olup olmadığını denetleyin ve sürümün ^2.7.1 veya daha yüksek olduğundan emin olun. Sürümü güncelleştirdikten sonra komutunu çalıştırın npm install
HTTP akışları çalışmıyor
HTTP yayını çalışmıyorsa:
- Paket sürümünün 4.3.0 veya daha yeni olduğunu doğrulayın
@azure/functions. - Azure İşlevleri runtime sürümünün 4.28 veya daha yeni olduğundan emin olun.
-
app.setup({ enableHttpStream: true })çağrıldığını kontrol et. - Doğrulama,
FUNCTIONS_REQUEST_BODY_SIZE_LIMITbüyük veri için uygun şekilde ayarlanmıştır.
Kancalar çalıştırılmıyor
Hook’larınız çalışmıyorsa:
- Programlama modeli v4’ü kullandığınızı doğrulayın.
- Hook kayıt sözdizimi doğrula:
app.hook.preInvocation()veyaapp.hook.appStart(). - Fonksiyon tanımlarından önce kancaları kaydettiğinizi kontrol edin.
- Hook'lar yalnızca belirli işlev türleri için çalışacaksa tetikleyici filtrelemesini inceleyin.
TypeScript derleme sorunları
TypeScript'e özgü sorunlar için:
Yapı hataları:
-
tsconfig.jsonöğesinin yapı çıktınızı işaret eden doğruoutDir'e sahip olduğunu doğrulayın -
scriptFileöğesinin v3 modelinde.jsdeğil, derlenmiş.tsdosyalarına işaret ettiğinden emin olun - Tüm TypeScript bağımlılıklarının yüklü olduğundan emin olun:
npm install --save-dev typescript @types/node
Tip hataları:
- En son tür tanımları için paketi güncelleme
@azure/functions - Doğru ithalat kullanın:
import { app, HttpRequest, InvocationContext } from '@azure/functions' - Fonksiyon imzalarının beklenen türlerle eşleştiğini doğrulayın
Modül çözünürlük problemleri
Modül hataları bulunamıyor:
- Tüm bağımlılıkların kurulduğundan emin olmak için çalıştırın
npm install - Check
node_modulesklasörü dağıtım paketinde var - ES modülleri için, dosya adlarının
.mjsuzantısını kullandığından veyapackage.jsoniçinde"type": "module"bulunduğundan emin olun. - TypeScript derlemesinden sonra göreli import yollarının doğru olduğunu doğrulayın
Ortam ve yapılandırma sorunları
Eksik çevre değişkenleri:
- Yerel gelişim için değişkenler ekleyin
local.settings.json - Bulut dağıtımı için Azure portalında Uygulama Ayarlarını ayarlayın
- Değerlere erişmek için
process.env["VARIABLE_NAME"]kullanın
Kayıt problemleri:
- İşleve özgü günlükler için
context.log()yerineconsole.log()kullanın - Application Insights bağlantı dizesinin yapılandırıldığını denetleyin
- Filtreleme için
host.jsoniçindeki log seviyelerini doğrulayın
Microsoft'dan yardım alma
Aşağıdaki yollardan biriyle Microsoft’tan daha fazla yardım alabilirsiniz:
- Azure İşlevleri Node.js deposunda bilinen sorunları arayın. Sorununuzun belirtildiğini görmüyorsanız yeni bir sorun oluşturun ve neler olduğunu bize bildirin.
- Bu kılavuzu kullanarak sorununuzu tanılayamıyorsanız, uygulamanızla ilgili sorunları tanılamaya yardımcı olmak için Microsoft destek mühendisleri kullanılabilir. Microsoft çeşitli destek planları sunar. Azure portalındaki işlev uygulamanızın Destek + sorun giderme bölümünde bir destek bileti oluşturun.
Sonraki Adımlar
- Azure İşlevleri için Microsoft Soru-Cevap sayfası
- Azure İşlevleri Node.js geliştirici kılavuzu