Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:FAQ sur Alibaba Cloud SDK for Node.js

Dernière mise à jour :Aug 11, 2026

Cette rubrique répond aux questions fréquemment posées sur l'intégration et l'utilisation d'Alibaba Cloud SDK for Node.js afin d'optimiser votre efficacité de développement.

Prérequis

  • Node.js 8.x ou version ultérieure est installé dans votre environnement de développement.

  • Les API Alibaba Cloud sont accessibles via votre réseau.

Vue d'ensemble

Questions et solutions

Comment gérer les erreurs liées aux AccessKey ?

Problème : le message d'erreur suivant s'affiche après l'exécution du code, indiquant que la paire d'AccessKey est mal configurée.

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

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

Solutions :

  1. Exécutez les commandes suivantes pour vérifier si les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET sont configurées.

    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%

    Si une paire d'AccessKey valide s'affiche, les variables d'environnement sont correctement configurées. En l'absence de réponse ou si la paire retournée est invalide, configurez les variables d'environnement selon vos besoins. Pour plus d'informations, consultez Configurer les variables d'environnement sous Linux, macOS et Windows.

  2. Vérifiez la présence d'erreurs liées à la paire d'AccessKey dans le code.

    Exemple de requête incorrecte :

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

    Exemple de requête correcte :

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

    Les expressions process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] et process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] récupèrent les valeurs depuis leurs variables d'environnement respectives.

    Important

    Pour éviter tout risque de sécurité, ne saisissez jamais la paire d'AccessKey directement dans le code de production.

Que faire si l'exécution d'une commande tsc retourne l'erreur « tsc: Fail to recognize the tsc command as the name of a cmdlet, a function, a script, or a executable program... » ?

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

Causes :

  1. Configuration incorrecte de la variable d'environnement PATH : le chemin du fichier tsc installé globalement n'a pas été ajouté à la variable d'environnement PATH.

  2. Politique d'exécution PowerShell : la politique d'exécution par défaut de PowerShell peut être définie sur Restricted, ce qui interdit l'exécution des scripts .ps1.

  3. Configuration incorrecte de la variable d'environnement PATH : le chemin du fichier tsc installé globalement, tel que D:\node.js\node_global, n'a pas été ajouté à la variable d'environnement PATH.

Solutions :

  1. Vérifiez si TypeScript est installé globalement :

    npm list -g typescript

    Si la sortie est vide ou indique que TypeScript n'est pas installé, cela signifie que l'installation est incorrecte.

  2. Exécutez la commande npm install -g typescript pour installer TypeScript globalement.

  3. Exécutez la commande suivante pour obtenir le chemin d'installation globale de npm :

    npm config get prefix   # Sample output: D:\node.js\node_global
  4. Utilisez le chemin retourné dans la commande suivante pour vérifier la présence du fichier tsc dans le répertoire :

    ls D:\node.js\node_global | Select-String 'tsc'
  5. Exécutez la commande suivante pour consulter la politique d'exécution de PowerShell :

    Get-ExecutionPolicy

    Si la sortie affiche Restricted, PowerShell bloque l'exécution des scripts.

  6. Modifiez la politique d'exécution en RemoteSigned pour autoriser l'exécution des scripts.

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    Exécutez à nouveau la commande Get-ExecutionPolicy pour vérifier la politique. La sortie attendue est RemoteSigned.

  7. Définissez la variable d'environnement PATH pour la session actuelle dans votre terminal :

    $env:Path += ";D:\node.js\node_global"
  8. Vérifiez si la variable d'environnement PATH contient bien le chemin global :

    $env:Path -split ';' | Select-String 'node_global'
  9. Exécutez la commande tsc pour compiler le fichier TypeScript .ts en un fichier JavaScript .js conformément au fichier de configuration tsconfig.json.

Remarque

Remplacez le chemin D:\node.js\node_global indiqué dans l'exemple par le chemin réel retourné par la commande npm config get prefix.

Que faire si la requête API expire et que le message « Error: connect ETIMEDOUT » s'affiche ?

Causes fréquentes et solutions :

L'expiration d'un appel API peut résulter de plusieurs facteurs. Cette section détaille les causes les plus courantes ainsi que les solutions correspondantes :

Cause 1 : Problèmes de connexion réseau

Cause : la requête ne parvient pas au serveur en raison d'une défaillance de la connexion réseau entre le client et le serveur, ou d'une instabilité du réseau.

Solution :

Utilisez la commande ping ou curl pour tester la connectivité entre votre hôte local et l'endpoint du service cloud. Par exemple, exécutez ping dysmsapi.aliyuncs.com ou curl -v https://dysmsapi.aliyuncs.com pour vérifier la connexion entre votre machine locale et l'endpoint de l'API Short Message Service (SMS).

  • Si la commande expire ou ne reçoit aucune réponse, vérifiez les règles de blocage sur votre pare-feu local ou vos routeurs.

  • Si une réponse est obtenue, définissez un délai d'expiration approprié pour éviter que des requêtes n'échouent à cause d'une configuration inadéquate. Pour plus d'informations, consultez Configurer un délai d'expiration. Exemple de code :

    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,
            });
Cause 2 : Temps de traitement de la requête trop long

Description : la durée de traitement de la requête API dépasse le délai de lecture spécifié.

Solution : ajustez le délai d'expiration pour tenir compte du temps de réponse prolongé de l'API. Pour plus d'informations, consultez Configurer un délai d'expiration. Vous pouvez notamment augmenter le paramètre de délai de lecture pour allonger cette durée. Exemple de code :

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,
        });

Que faire si le message « MissingRequiredParameter » apparaît lors de l'appel d'une opération API ?

Cet exemple illustre l'appel de l'opération SendSms du service Short Message Service (SMS).

  • Accédez à la page API Debugging d'OpenAPI Explorer, puis sélectionnez le produit et l'API concernés.

  • Assurez-vous que tous les paramètres obligatoires, tels que phoneNumbers et signName, sont bien renseignés dans l'objet de requête construit. Dans cet exemple, il s'agit de l'objet SendSmsRequest.

  • Vérifiez que tous les paramètres requis sont spécifiés en vous référant à la documentation de l'API.

  • Confirmez que les valeurs des paramètres obligatoires sont valides. Vérifiez par exemple que les numéros de téléphone mobile respectent les formats attendus.

  • Avant d'envoyer une requête API, le SDK valide automatiquement les paramètres. Si un ou plusieurs paramètres obligatoires manquent, une erreur telle que MissingRequiredParameter est signalée. Par exemple, si le paramètre phoneNumbers est absent, l'erreur « MissingPhoneNumbers: code: 400 » s'affiche. Dans ce cas, renseignez le paramètre en suivant les indications du message d'erreur.

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>",
    });

Que faire si un appel API échoue car l'opération n'est pas prise en charge dans la région spécifiée et que le message « getaddrinfo ENOTFOUND » est retourné ?

Assurez-vous que le service appelé est disponible dans la région sélectionnée. Vous trouverez l'endpoint correct dans OpenAPI Explorer. Veillez à utiliser l'endpoint approprié.

Dans la barre de navigation supérieure d'OpenAPI Explorer, sélectionnez Short Message Service. Sur la page d'accueil du produit, accédez à l'onglet Service area list. Le format de l'endpoint est [product_code].[region_id].aliyuncs.com. Le tableau répertorie chaque ID de région (tel que cn-beijing, cn-hangzhou et cn-shanghai) ainsi que son endpoint de service correspondant (par exemple dysmsapi.aliyuncs.com).

Comment traiter les erreurs signalées par la commande npm install ?

Assurez-vous que Node.js et npm sont correctement installés. Pour plus d'informations, consultez Installer Node.js sous Windows.

Causes possibles :

  • Conflits dans la configuration des sources d'images : la configuration globale npm utilise une source tierce, comme Taobao, mais aucune source officielle dédiée n'est configurée pour le scope @alicloud.

  • Des problèmes de cache ou de réseau ont corrompu le cache local npm, ou des politiques réseau telles que des pare-feux d'entreprise bloquent les requêtes vers la source d'images.

  • La version du package n'existe pas. Par exemple, la version spécifiée 3.1.1 est introuvable dans la source d'images.

Solutions :

  1. Exécutez la commande suivante pour vider le cache npm afin de corriger les éventuelles corruptions, puis réinstallez le SDK.

    npm cache clean --force
  2. Utilisez une source npm officielle.

    1. Configurez une source officielle pour le scope @alicloud. Exécutez la commande suivante pour définir une source npm exclusivement pour les packages commençant par @alicloud.

      npm config set @alicloud:registry=https://registry.npmjs.org
    2. Exécutez la commande suivante pour vérifier la configuration npm et confirmer que le scope est bien pris en compte :

      npm config get @alicloud:registry
      # Expected output: https://registry.npmjs.org
    3. Exécutez la commande npm install @alicloud/XXX pour installer Alibaba Cloud SDK.

  3. Vérifiez la source d'images Alibaba Cloud. Exécutez la commande suivante pour basculer temporairement vers la source souhaitée (facultatif) :

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

Après l'installation du SDK, npm peut retourner un message tel que 9 vulnerabilities (6 moderate, 3 high). Voici la cause et la solution associée :

Cause : un package de dépendances tiers du SDK, tel que axios ou lodash, est obsolète et contient une vulnérabilité connue.

Solution : lancez la commande npm audit fix pour déclencher la correction automatique des erreurs. npm mettra automatiquement à niveau les packages vers une version compatible présentant moins de vulnérabilités, voire aucune.

Comment résoudre un conflit de versions d'un package de dépendances ?

  • Exécutez la commande npm ls pour afficher l'arborescence des dépendances et vous assurer qu'aucun conflit de versions n'existe.

  • Supprimez le répertoire node_modules ainsi que le fichier package-lock.json, puis réinstallez les dépendances.

 rm -rf node_modules package-lock.json
 npm install

Liste de contrôle des exceptions Node.js de base

Message d'erreur

Cause possible

Solution

TypeError

Le type d'une variable ou d'une expression ne correspond pas au type attendu.

Vérifiez que le type de la variable ou de l'expression est conforme à vos attentes. Utilisez des instructions conditionnelles ou une méthode de vérification de type telle que typeof pour gérer cette exception.

SyntaxError

La syntaxe du code est invalide.

Assurez-vous que la syntaxe du code est correcte. Servez-vous d'un éditeur de code ou d'un outil de développement pour détecter et corriger les erreurs de syntaxe.

ReferenceError

La variable référencée n'existe pas.

Confirmez que la variable que vous souhaitez référencer a bien été définie et initialisée. Recourez à des instructions conditionnelles ou à un mécanisme de gestion des exceptions pour traiter cette erreur.

RangeError

La valeur spécifiée se situe en dehors de la plage valide. Cela peut concerner un index de tableau hors limites ou un nombre d'appels récursifs excessif.

Garantissez que la valeur fournie, comme l'index du tableau ou la profondeur de la fonction récursive, reste dans les limites autorisées. Des instructions conditionnelles ou un mécanisme de gestion des exceptions permettent de prévenir cette erreur.

URIError

L'URI est invalide ou une erreur s'est produite lors de l'encodage.

Veillez à utiliser un URI valide et à respecter les normes d'encodage applicables. Vous pouvez employer des instructions conditionnelles ou une méthode d'encodage URI spécifique pour résoudre ce problème.

Support technique

Les solutions présentées ci-dessus vous aideront à mieux exploiter les SDK Alibaba Cloud. Si vous rencontrez d'autres problèmes, contactez le support technique Alibaba Cloud via le canal suivant :