Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud SDK:Node.js için Alibaba Cloud SDK Hakkında SSS

Son Güncelleme:Oct 07, 2026

Bu konu, geliştirme verimliliğinizi artırmanıza yardımcı olmak amacıyla Node.js için Alibaba Cloud SDK entegrasyonu ve kullanımıyla ilgili sık sorulan soruların yanıtlarını sunar.

Önkoşullar

  • Geliştirme ortamınızda Node.js 8.x veya sonraki bir sürüm yüklü olmalıdır.

  • Alibaba Cloud API uç noktalarına ağ üzerinden erişilebilir olmalıdır.

Genel Bakış

Sorular ve çözümler

AccessKey hatalarını nasıl gideririm?

Sorun: Kod çalıştırıldıktan sonra aşağıdaki hata mesajı döner. Bu mesaj, AccessKey çiftinin doğru yapılandırılmadığını gösterir.

  • Node.js için Alibaba Cloud SDK V2.0: Cannot read properties of undefined (reading 'getCredential').

  • Node.js için Alibaba Cloud SDK V1.0: AssertionError [ERR_ASSERTION]: must pass "config.accessKeyId".

Çözümler:

  1. ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenlerinin yapılandırılıp yapılandırılmadığını denetlemek için aşağıdaki komutları çalıştırın.

    Linux/macOS

    echo $ALIBABA_CLOUD_ACCESS_KEY_ID
    echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

    Windows

    echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
    echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

    Geçerli bir AccessKey çifti dönerse ortam değişkenleri doğru yapılandırılmış demektir. AccessKey çifti dönmezse veya geçersiz bir çift dönerse ortam değişkenlerini gerektiği gibi yapılandırın. Daha fazla bilgi için bkz. Linux, macOS ve Windows'ta ortam değişkenlerini yapılandırma.

  2. Kodda AccessKey çiftiyle ilgili hataları denetleyin.

    Örnek hatalı istek:

     let config = new OpenApi.Config({
          accessKeyId: process.env['yourAccessKeyID'],
          accessKeySecret: process.env['yourAccessKeySecret'],
        });

    Örnek başarılı istek:

    let config = new OpenApi.Config({
          accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
          accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        });
    Not

    process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] ve process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ifadeleri, değerleri ilgili ortam değişkenlerinden alır.

    Önemli

    Güvenlik risklerini önlemek için AccessKey çiftini kod içine doğrudan yazmayın.

Bir tsc komutu çalıştırdıktan sonra "tsc: Fail to recognize the tsc command as the name of a cmdlet, a function, a script, or a executable program..." hata mesajı alırsam ne yapmalıyım?

PS C:\Users\issuser\Downloads\69351a7d-c9ef-417c-8986-a371cd208ece-TypeScript> tsc
tsc : The term 'tsc' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ tsc
+ ~~~
    + CategoryInfo          : ObjectNotFound: (tsc:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Nedenler:

  1. PATH ortam değişkeni yanlış yapılandırılmış: Genel olarak yüklenen tsc dosya yolu PATH ortam değişkenine eklenmemiş.

  2. PowerShell yürütme ilkesi: Varsayılan PowerShell yürütme ilkesi Restricted olarak ayarlanmış olabilir; bu durum .ps1 betiklerinin çalıştırılmasını engeller.

  3. PATH ortam değişkeni yanlış yapılandırılmış: Genel olarak yüklenen tsc dosya yolu (örneğin D:\node.js\node_global) PATH ortam değişkenine eklenmemiş.

Çözümler:

  1. TypeScript paketinin genel olarak yüklenip yüklenmediğini denetleyin:

    npm list -g typescript

    Çıktı boşsa veya TypeScript'in yüklü olmadığını belirtiyorsa TypeScript doğru şekilde yüklenmemiştir.

  2. TypeScript'i genel olarak yüklemek için npm install -g typescript komutunu çalıştırın.

  3. npm genel yükleme yolunu sorgulamak için aşağıdaki komutu çalıştırın:

    npm config get prefix   # Sample output: D:\node.js\node_global
  4. Dönen yolu aşağıdaki komutta kullanarak tsc dosyasının dizinde var olup olmadığını denetleyin:

    ls D:\node.js\node_global | Select-String 'tsc'
  5. PowerShell yürütme ilkesini sorgulamak için aşağıdaki komutu çalıştırın:

    Get-ExecutionPolicy

    Çıktı Restricted ise PowerShell betiklerin çalıştırılmasını engeller.

  6. Betik yürütmeye izin vermek için yürütme ilkesini RemoteSigned olarak değiştirin.

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    Yürütme ilkesini sorgulamak için Get-ExecutionPolicy komutunu yeniden çalıştırın. Beklenen çıktı RemoteSigned olmalıdır.

  7. Terminalinizde geçerli oturumun PATH ortam değişkenini belirtin:

    $env:Path += ";D:\node.js\node_global"
  8. PATH ortam değişkeninin genel yolu içerip içermediğini denetleyin:

    $env:Path -split ';' | Select-String 'node_global'
  9. .ts TypeScript dosyasını tsconfig.json yapılandırma dosyasına göre .js JavaScript dosyasına derlemek için tsc komutunu çalıştırın.

Not

Örnekteki D:\node.js\node_global yolunu, npm config get prefix komutunun döndürdüğü gerçek dosya yoluyla değiştirin.

API isteği zaman aşımına uğrar ve "Error: connect ETIMEDOUT" mesajı dönerse ne yapmalıyım?

Yaygın nedenler ve çözümler:

API çağrısı zaman aşımı birden çok faktörden kaynaklanabilir. Aşağıda yaygın nedenler ve karşılık gelen çözümler açıklanmıştır:

Neden 1: Ağ bağlantısı sorunları

Neden: İstemci ile sunucu arasındaki ağ bağlantısı kesildiği veya ağ kararsız olduğu için istek sunucuya ulaşamaz.

Çözüm:

Şirket içi ana bilgisayar ile cloud hizmetinin uç noktası arasındaki bağlantıyı test etmek için ping veya curl komutunu çalıştırın. Örneğin, şirket içi ana bilgisayarınız ile Short Message Service (SMS) API uç noktası arasındaki bağlantıyı test etmek için ping dysmsapi.aliyuncs.com veya curl -v https://dysmsapi.aliyuncs.com komutunu çalıştırın.

  • Komut zaman aşımına uğrar veya yanıt almazsa şirket içi güvenlik duvarınızda veya yönlendiricilerinizde engelleyici ilkeler olup olmadığını denetleyin.

  • Yanıt alınırsa istek hatalarını önlemek için uygun bir zaman aşımı süresi belirtmenizi öneririz. Daha fazla bilgi için bkz. Zaman aşımı süresi yapılandırma. Örnek kod:

    JavaScript

    // Create a RuntimeOptions instance and specify runtime parameters. 
        const runtime = new RuntimeOptions({
            // Configure a timeout period for connection requests.
            connectTimeout: 10000,
        });

    TypeScript

    // Create a RuntimeOptions instance and specify runtime parameters. 
            const runtime = new $Util.RuntimeOptions({
                // Configure a timeout period for connection requests.
                connectTimeout: 10000,
            });
Neden 2: İsteğin işlenmesinin uzun sürmesi

Açıklama: API isteğinin işlenme süresi belirtilen okuma zaman aşımı süresini aşar.

Çözüm: Uzun süren API yanıt sürelerine uyum sağlamak için zaman aşımı süresini yapılandırın. Daha fazla bilgi için bkz. Zaman aşımı süresi yapılandırma. Örneğin, okuma zaman aşımı süresini uzatmak için okuma zaman aşımı parametresini yapılandırabilirsiniz. Örnek kod:

JavaScript

// Create a RuntimeOptions instance and specify runtime parameters. 
    const runtime = new RuntimeOptions({
        // Configure a timeout period for read requests.
        readTimeout: 10000,
    });

TypeScript

// Create a RuntimeOptions instance and specify runtime parameters. 
        const runtime = new $Util.RuntimeOptions({
            // Configure a timeout period for read requests.
            readTimeout: 10000,
        });

Bir API işlemi çağrılırken "MissingRequiredParameter" hatası alınırsa ne yapmalıyım?

Bu örnekte Short Message Service (SMS) hizmetinin SendSms işlemi çağrılır.

  • OpenAPI Explorer'daki API Hata Ayıklama sayfasına gidin, ardından ürünü ve API'yi seçin.

  • Oluşturulan istek nesnesinde phoneNumbers ve signName gibi tüm zorunlu parametrelerin belirtilip belirtilmediğini denetleyin. Bu örnekte SendSmsRequest nesnesi kullanılır.

  • API referansına göre tüm zorunlu parametrelerin belirtildiğini doğrulayın.

  • Zorunlu parametrelerin değerlerinin geçerli olduğundan emin olun. Örneğin, cep telefonu numaralarının geçerli biçimde belirtilip belirtilmediğini denetleyin.

  • SDK bir API isteği göndermeden önce parametreleri otomatik olarak doğrular. Bir veya daha fazla zorunlu parametre belirtilmezse MissingRequiredParameter gibi bir hata raporlanır. Örneğin, phoneNumbers parametresi belirtilmezse "MissingPhoneNumbers: code: 400" hatası döner. Bu durumda parametreyi hata mesajına göre belirtin.

JavaScript

let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
      phoneNumbers: '<YOUR_VALUE>',
      signName: '<YOUR_VALUE>',
      templateCode: '<YOUR_VALUE>',
    });

TypeScript

let sendSmsRequest = new $Dysmsapi20170525.SendSmsRequest({
      phoneNumbers: "<YOUR_VALUE>",
      signName: "<YOUR_VALUE>",
      templateCode: "<YOUR_VALUE>",
    });

Belirtilen bölgede işlem desteklenmediği için API çağrısı başarısız olur ve "getaddrinfo ENOTFOUND" mesajı dönerse ne yapmalıyım?

Çağırdığınız hizmetin seçilen bölgede kullanılabilir olduğundan emin olun. Doğru hizmet uç noktasını OpenAPI Explorer içinde bulabilirsiniz. Doğru uç noktayı kullandığınızdan emin olun.

OpenAPI Explorer'ın üst gezinme çubuğunda Short Message Service seçeneğini belirleyin. Ürün ana sayfasında Service area list sekmesine gidin. Uç nokta biçimi [product_code].[region_id].aliyuncs.com şeklindedir. Tabloda her bölge kimliği (örneğin cn-beijing, cn-hangzhou ve cn-shanghai) ve buna karşılık gelen hizmet uç noktası (örneğin dysmsapi.aliyuncs.com) listelenir.

npm install komutunun raporladığı hataları nasıl gideririm?

Node.js ve npm'nin doğru şekilde yüklendiğinden emin olun. Daha fazla bilgi için bkz. Windows'a Node.js yükleme.

Olası nedenler:

  • Kaynak yapılandırmalarında çakışma var. Genel npm yapılandırmaları Taobao gibi üçüncü taraf bir kaynak kullanıyor ancak @alicloud kapsamı için bağımsız bir resmi kaynak yapılandırılmamış.

  • Önbellek veya ağ sorunları npm yerel önbelleğinde hasara neden oluyor veya kurumsal güvenlik duvarları gibi ağ ilkeleri kaynağa yönelik istekleri engelliyor.

  • Paket sürümü mevcut değil. Örneğin, belirtilen 3.1.1 sürümü kaynakta bulunmuyor.

Çözümler:

  1. Önbellek hasarını düzeltmek için npm önbelleğini temizlemek ve SDK'yı yeniden yüklemek için aşağıdaki komutu çalıştırın.

    npm cache clean --force
  2. Resmi bir npm kaynağı kullanın.

    1. @alicloud kapsamı için resmi bir kaynak yapılandırın. Yalnızca @alicloud ile başlayan paketler için bir npm kaynağı yapılandırmak üzere aşağıdaki komutu çalıştırın.

      npm config set @alicloud:registry=https://registry.npmjs.org
    2. npm yapılandırmalarını denetlemek ve kapsamın etkili olduğundan emin olmak için aşağıdaki komutu çalıştırın:

      npm config get @alicloud:registry
      # Expected output: https://registry.npmjs.org
    3. Alibaba Cloud SDK'yı yüklemek için npm install @alicloud/XXX komutunu çalıştırın.

  3. Alibaba Cloud kaynağını denetleyin. İstenen kaynağa geçici olarak geçiş yapmak için aşağıdaki komutu çalıştırın (isteğe bağlı):

    # In this example, the SMS SDK is installed.
    npm install @alicloud/dysmsapi20170525@3.1.1 --registry=https://registry.npmmirror.com
Not

SDK yüklendikten sonra npm, 9 vulnerabilities (6 moderate, 3 high) gibi bir mesaj döndürür. Neden ve çözüm:

Neden: SDK'nın axios veya lodash gibi üçüncü taraf bağımlılık paketleri eski sürümdedir ve bilinen bir güvenlik açığı içerir.

Çözüm: Otomatik hata düzeltmeyi başlatmak için npm audit fix komutunu çalıştırın. npm, daha az veya sıfır güvenlik açığı içeren uyumlu bir sürüme otomatik olarak yükseltme yapar.

Bağımlılık paketi sürüm çakışmasını nasıl çözerim?

  • Bağımlılık ağacını görüntülemek ve sürüm çakışması olmadığından emin olmak için npm ls komutunu çalıştırın.

  • node_modules dizinini ve package-lock.json dosyasını silin ve bağımlılıkları yeniden yükleyin.

 rm -rf node_modules package-lock.json
 npm install

Temel Node.js istisnaları kontrol listesi


Hata mesajı


Olası neden


Çözüm


TypeError


Bir değişkenin veya ifadenin türü beklentileri karşılamıyor.


Değişkenin veya ifadenin türünün beklendiği gibi olduğunu doğrulayın. Bu istisnayı işlemek için koşullu deyimler veya typeof gibi bir tür denetleme yöntemi kullanabilirsiniz.


SyntaxError


Kodun sözdizimi geçersiz.


Kodun sözdiziminin doğru olduğunu doğrulayın. Sözdizimi hatalarını algılamak ve düzeltmek için kod düzenleyici veya bir geliştirme aracı kullanabilirsiniz.


ReferenceError


Başvurulan değişken mevcut değil.


Başvurmak istediğiniz değişkenin tanımlandığından ve başlatıldığından emin olun. Bu istisnayı işlemek için koşullu deyimler veya bir istisna işleme mekanizması kullanabilirsiniz.


RangeError


Belirtilen değer geçerli aralığın dışında. Örneğin, dizi indeksi aralık dışı veya özyinelemeli işlev çok fazla kez çağrılıyor.


Dizi indeksi veya özyinelemeli işlevin derinliği gibi belirtilen değerin geçerli aralıkta olduğundan emin olun. Bu istisnayı işlemek için koşullu deyimler veya bir istisna işleme mekanizması kullanabilirsiniz.


URIError


URI geçersiz veya kodlama sırasında bir hata oluştu.


Geçerli bir URI kullandığınızdan veya kodlamanın ilgili belirtimlere uygun olarak gerçekleştirildiğinden emin olun. Bu istisnayı işlemek için koşullu deyimler veya belirli bir URI kodlama yöntemi kullanabilirsiniz.

Teknik destek

Yukarıdaki sorunlara yönelik çözümler, Alibaba Cloud SDK'larını daha iyi kullanmanıza yardımcı olur. Diğer sorunlarla karşılaşırsanız aşağıdaki yöntemi kullanarak Alibaba Cloud teknik desteğiyle iletişime geçebilirsiniz: