すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud SDK:Alibaba Cloud SDK for Node.js に関するよくある質問

最終更新日:Jun 23, 2026

このトピックでは、Alibaba Cloud SDK for Node.js の統合と使用に関するよくある質問とその回答をまとめ、開発効率の向上を支援します。

前提条件

  • 開発環境に Node.js 8.x 以降がインストールされていること。

  • ご利用のネットワークから Alibaba Cloud API に到達可能であること。

概要

質問と解決策

AccessKey エラーの対処方法

問題:コードの実行後に次のエラーメッセージが返されます。このエラーメッセージは、AccessKey ペアが正しく構成されていないことを示しています。

  • 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"。

解決策:

  1. 次のコマンドを実行して、`ALIBABA_CLOUD_ACCESS_KEY_ID` および `ALIBABA_CLOUD_ACCESS_KEY_SECRET` 環境変数が構成されているかどうかを確認します。

    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%

    有効な AccessKey ペアが返された場合、環境変数は正しく構成されています。AccessKey ペアが返されないか、無効な AccessKey ペアが返された場合は、必要に応じて環境変数を構成してください。詳細については、「Linux、macOS、Windows で環境変数を構成する」をご参照ください。

  2. コード内の AccessKey ペアに関連するエラーを確認します。

    リクエスト失敗のサンプル:

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

    リクエスト成功のサンプル:

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

    process.env['ALIBABA_CLOUD_ACCESS_KEY_ID']process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] は、それぞれの環境変数から値を取得する式です。

    重要

    セキュリティリスクを防ぐため、オンラインコードに AccessKey ペアを書き込まないでください。

tsc コマンドを実行した後、「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

原因:

  1. PATH 環境変数が正しく設定されていません:グローバルにインストールされた tsc ファイルパスが PATH 環境変数に追加されていません。

  2. PowerShell 実行ポリシー: デフォルトの PowerShell 実行ポリシーは Restricted に設定されている場合があり、その場合 .ps1 スクリプトの実行は禁止されます。

  3. PATH 環境変数が正しく設定されていません。グローバルにインストールされた tsc ファイルパス (D:\node.js\node_global など) が PATH 環境変数に追加されていません。

解決策:

  1. TypeScript がグローバルにインストールされているか確認します:

    npm list -g typescript

    出力が空であるか、TypeScript がインストールされていないことを示す場合、TypeScript は正しくインストールされていません。

  2. TypeScript をグローバルにインストールするには、npm install -g typescript コマンドを実行します。

  3. 次のコマンドを実行して、npm のグローバルインストールパスを確認します:

    npm config get prefix   # Sample output: D:\node.js\node_global
  4. 返されたパスを次のコマンドに含めて、ディレクトリに tsc ファイルが存在するかどうかを確認します:

    ls D:\node.js\node_global | Select-String 'tsc'
  5. 次のコマンドを実行して、PowerShell の実行ポリシーをクエリします:

    Get-ExecutionPolicy

    出力が Restricted の場合、PowerShell はスクリプトの実行を禁止します。

  6. スクリプトの実行を許可するため、実行ポリシーをRemoteSignedに変更します。

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

    再度 Get-ExecutionPolicy コマンドを実行して、実行ポリシーをクエリします。期待される出力は RemoteSigned です。

  7. ターミナルで現在のセッションの PATH 環境変数を指定します:

    $env:Path += ";D:\node.js\node_global"
  8. PATH 環境変数にグローバルパスが含まれているか確認します:

    $env:Path -split ';' | Select-String 'node_global'
  9. tsconfig.json 設定ファイルに基づいて tsc コマンドを実行し、.ts TypeScript ファイルを .js JavaScript ファイルにコンパイルします。

説明

例の D:\node.js\node_global パスを、 npm config get prefix コマンドで返される実際のファイルパスに置き換えてください。

API リクエストがタイムアウトし、「Error: connect ETIMEDOUT」というメッセージが返された場合の対処方法

一般的な原因と解決策:

API 呼び出しのタイムアウトは、複数の要因によって引き起こされる可能性があります。以下に、一般的な原因とそれに対応する解決策を説明します。

原因 1:ネットワーク接続の問題

原因:クライアントとサーバー間のネットワーク接続の失敗やネットワークの不安定さにより、リクエストがサーバーに到達できません。

解決策:

オンプレミスホストとクラウドサービスのエンドポイント間の接続性をテストするには、ping または curl コマンドを実行します。たとえば、お使いのオンプレミスホストと Short Message Service (SMS) API のエンドポイント間の接続性をテストするには、ping dysmsapi.aliyuncs.com または curl -v https://dysmsapi.aliyuncs.com コマンドを実行します。

  • コマンドがタイムアウトするか、応答を受信しない場合は、オンプレミスのファイアウォールまたはルーターのブロッキングポリシーを確認してください。

  • 応答が返された場合は、不適切なタイムアウト構成によるリクエストの失敗を防ぐために、適切なタイムアウト期間を指定することを推奨します。詳細については、「タイムアウト期間の設定」をご参照ください。サンプルコード:

    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,
            });
原因 2:リクエストの処理に時間がかかる

説明:API リクエストの処理時間が、指定された読み取りタイムアウト期間を超えています。

解決策:API の応答時間が長くなることに対応するため、タイムアウト期間を設定します。詳細については、「タイムアウト期間の設定」をご参照ください。たとえば、読み取りタイムアウトパラメーターを設定して、読み取りタイムアウト期間を延長できます。サンプルコード:

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

API オペレーションの呼び出し時に「MissingRequiredParameter」エラーが報告された場合の対処方法

この例では、Short Message Service (SMS) サービスの SendSms オペレーションが呼び出されます。

  • OpenAPI Explorer の API デバッグ ページに移動し、プロダクトと API を選択します。

  • 作成されたリクエストオブジェクトに、phoneNumbers や signName などのすべての必須パラメーターが指定されているかを確認します。この例では、SendSmsRequest オブジェクトを使用します。

  • API リファレンスに基づいて、すべての必須パラメーターが指定されていることを確認します。

  • 必須パラメーターの値が有効であることを確認します。たとえば、携帯電話番号が有効なフォーマットで指定されているかを確認します。

  • SDKは、API リクエストを送信する前に、パラメーターを自動的に検証します。必須パラメーターが1つ以上指定されていない場合、MissingRequiredParameter などのエラーが報告されます。たとえば、phoneNumbers パラメーターが指定されていない場合、「MissingPhoneNumbers: code: 400」というエラーが報告されます。この場合、エラーメッセージに基づいてパラメーターを指定してください。

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

指定されたリージョンでオペレーションがサポートされていないために API オペレーションの呼び出しに失敗し、「getaddrinfo ENOTFOUND」というメッセージが返された場合の対処方法

呼び出しているサービスが選択したリージョンで利用可能であることを確認してください。OpenAPI Explorer で正しいサービスエンドポイントを見つけることができます。正しいエンドポイントを使用していることを確認してください。

OpenAPI Explorer の上部ナビゲーションバーで、Short Message Service を選択します。プロダクトのホームページで、[サービスエリアリスト] タブに移動します。エンドポイントのフォーマットは [product_code].[region_id].aliyuncs.com です。この表には、各リージョン ID (cn-beijingcn-hangzhoucn-shanghai など) とそれに対応するサービスエンドポイント (dysmsapi.aliyuncs.com など) がリストされています。

npm install コマンドが報告するエラーには、どのように対処すればよいですか?

Node.js と npm が正しくインストールされていることを確認してください。詳細については、「Windows に Node.js をインストールする」をご参照ください。

考えられる原因:

  • イメージソースの構成に競合があります。グローバル npm 構成では Taobao などのサードパーティのイメージソースが使用されていますが、@alicloud スコープには独立した公式ソースが構成されていません。

  • キャッシュまたはネットワークの問題により npm のローカルキャッシュが破損しているか、エンタープライズファイアウォールなどのネットワークポリシーがイメージソースへのリクエストをブロックしています。

  • パッケージバージョンが存在しません。たとえば、指定されたバージョン 3.1.1 はイメージソースに存在しません。

解決策:

  1. 次のコマンドを実行して npm キャッシュをクリアし、キャッシュの破損を修正してから、SDK を再インストールします。

    npm cache clean --force
  2. 公式の npm ソースを使用します。

    1. @alicloud スコープの公式ソースを設定します。次のコマンドを実行して、@alicloud で始まるパッケージにのみ npm ソースを設定します。

      npm config set @alicloud:registry=https://registry.npmjs.org
    2. 次のコマンドを実行して npm 構成を確認し、スコープが有効になっていることを確認します:

      npm config get @alicloud:registry
      # Expected output: https://registry.npmjs.org
    3. npm install @alicloud/XXX コマンドを実行して、Alibaba Cloud SDK をインストールします。

  3. Alibaba Cloud のイメージソースを確認します。次のコマンドを実行して、一時的に目的のイメージソースに切り替えます (オプション):

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

SDK のインストール後、npm から 9 vulnerabilities (6 moderate, 3 high) のようなメッセージが返されます。原因と解決策:

原因:SDK のサードパーティ依存パッケージ、axioslodash などが古く、既知の脆弱性が含まれています。

解決策: npm audit fix コマンドを実行して、自動エラー修正を開始します。npm は、脆弱性が少ない、またはない互換性のあるバージョンに自動的にアップグレードします。

依存パッケージのバージョン競合の解決方法

  • npm ls コマンドを実行して依存関係ツリーを表示し、バージョンの競合が発生しないことを確認します。

  • node_modules ディレクトリと package-lock.json ファイルを削除し、依存関係を再インストールします。

 rm -rf node_modules package-lock.json
 npm install

Node.js の基本的な例外のチェックリスト

エラーメッセージ

考えられる原因

解決策

TypeError

変数の型または式が期待を満たしていません。

変数の型または式が期待どおりであることを確認します。条件付きステートメントや `typeof` などの型チェックメソッドを使用して、この例外を処理できます。

SyntaxError

コードの構文が無効です。

コードの構文が正しいことを確認します。コードエディタや開発ツールを使用して、構文エラーを検出および修正できます。

ReferenceError

参照された変数が存在しません。

参照したい変数が定義され、初期化されていることを確認します。条件付きステートメントや例外処理メカニズムを使用して、この例外を処理できます。

RangeError

指定された値が有効範囲外です。たとえば、配列のインデックスが範囲外であるか、再帰関数が呼び出されすぎています。

配列のインデックスや再帰関数の深さなど、指定された値が有効範囲内であることを確認します。条件付きステートメントや例外処理メカニズムを使用して、この例外を処理できます。

URIError

URI が無効であるか、エンコーディング中にエラーが発生しました。

有効な URI を使用しているか、関連する仕様に従ってエンコーディングが実行されていることを確認します。条件付きステートメントや特定の URI エンコーディング方式を使用して、この例外を処理できます。

テクニカルサポート

上記の問題の解決策は、Alibaba Cloud SDK をより良く使用するのに役立ちます。他の問題が発生した場合は、次の方法で Alibaba Cloud のテクニカルサポートに連絡できます。