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

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

最終更新日:Jul 09, 2025

このトピックでは、Node.js 向け Alibaba Cloud SDK の統合と使用に関するよくある質問への回答を提供し、開発効率の向上に役立てます。

前提条件

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

  • ネットワーク経由で Alibaba Cloud API にアクセスできること。

概要

質問と解決策

AccessKey エラーを処理するにはどうすればよいですか?

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

  • Node.js 向け Alibaba Cloud SDK V2.0:未定義のプロパティを読み取ることができません (reading 'getCredential')。

  • Node.js 向け Alibaba Cloud SDK V1.0:AssertionError [ERR_ASSERTION]: "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 ID と AccessKey シークレットが ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数と 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...」というエラーメッセージが返された場合はどうすればよいですか?

image

原因:

  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. npm install -g typescript コマンドを実行して、TypeScript をグローバルにインストールします。

  3. 次のコマンドを実行して、npm のグローバルインストールパスをクエリします。

    npm config get prefix   # 出力例: 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. tsc コマンドを実行して、.ts TypeScript ファイルを .js JavaScript ファイルにコンパイルします(tsconfig.json 構成ファイルに基づく)。

説明

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

API リクエストがタイムアウトし、「Error: connect ETIMEDOUT」メッセージが返された場合はどうすればよいですか?

一般的な原因と解決策:

API 呼び出しのタイムアウトは、複数の要因によって発生する可能性があります。次のセクションでは、一般的な原因と対応する解決策について説明します。

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

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

解決策:

ping コマンドまたは curl コマンドを実行して、オンプレミスホストとクラウドサービスのエンドポイント間の接続性をテストします。たとえば、ping dysmsapi.aliyuncs.com コマンドまたは curl -v https://dysmsapi.aliyuncs.com コマンドを実行して、オンプレミスホストとショートメッセージサービス(SMS) API のエンドポイント間の接続性をテストします。

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

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

    JavaScript

    // RuntimeOptions インスタンスを作成し、ランタイムパラメータを指定します。
        const runtime = new RuntimeOptions({
            // 接続リクエストのタイムアウト期間を構成します。
            connectTimeout: 10000,
        });

    TypeScript

    // RuntimeOptions インスタンスを作成し、ランタイムパラメータを指定します。
            const runtime = new $Util.RuntimeOptions({
                // 接続リクエストのタイムアウト期間を構成します。
                connectTimeout: 10000,
            });
原因 2:リクエストの処理に時間がかかっている

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

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

JavaScript

// RuntimeOptions インスタンスを作成し、ランタイムパラメータを指定します。
    const runtime = new RuntimeOptions({
        // 読み取りリクエストのタイムアウト期間を構成します。
        readTimeout: 10000,
    });

TypeScript

// RuntimeOptions インスタンスを作成し、ランタイムパラメータを指定します。
        const runtime = new $Util.RuntimeOptions({
            // 読み取りリクエストのタイムアウト期間を構成します。
            readTimeout: 10000,
        });

API 操作を呼び出したときに「MissingRequiredParameter」エラーが報告された場合はどうすればよいですか?

この例では、ショートメッセージサービス (SMS) サービスの SendSms 操作が呼び出されます。

  • OpenAPI Explorer にログオンします。 呼び出す Alibaba Cloud サービスの API デバッグページに移動します。 呼び出す API 操作を見つけます。

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

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

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

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

image

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 操作がサポートされていないため API 操作の呼び出しに失敗し、「getaddrinfo ENOTFOUND」メッセージが返された場合はどうすればよいですか?

選択したリージョンで、アクセスするサービスがサポートされていることを確認します。 OpenAPI Explorer の製品ホームページでサービスのエンドポイントを見つけます。次の図は、SMS サービスのエンドポイントを見つける方法を示しています。

image

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
      # 予期される出力:https://registry.npmjs.org
    3. npm install @alicloud/XXX コマンドを実行して、Alibaba Cloud SDK をインストールします。

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

    # この例では、SMS SDK がインストールされています。
    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

変数または式の型が予期されたものと一致しません。

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

SyntaxError

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

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

ReferenceError

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

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

RangeError

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

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

URIError

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

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

テクニカルサポート

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