全部产品
Search
文档中心

Alibaba Cloud SDK:Integrasi Alibaba Cloud SDK V2.0 untuk Node.js

更新时间:Jul 08, 2025

Untuk mempermudah pemanggilan API, disarankan mengintegrasikan proyek Anda dengan Alibaba Cloud SDK. SDK ini menyederhanakan proses pengembangan, mempercepat integrasi fitur, dan mengurangi biaya O&M secara signifikan. Untuk mengintegrasikan dengan Alibaba Cloud SDK, ikuti langkah-langkah berikut: instal SDK, konfigurasikan kredensial akses, dan gunakan SDK. Topik ini menjelaskan cara melakukan integrasi tersebut.

Prasyarat

Versi Node.js harus 8.x atau lebih baru.

Impor SDK.

  1. Masuk ke SDK Center dan pilih layanan yang ingin Anda gunakan SDK-nya. Dalam contoh ini, Short Message Service (SMS) dipilih.

  2. Pada halaman Short Message Service, pilih TypeScript di bagian All languages. Pada tab Quick Start, dapatkan metode instalasi Short Message Service (SMS) SDK.image

Konfigurasikan kredensial akses

Untuk memanggil operasi API dari layanan Alibaba Cloud, Anda harus mengonfigurasi kredensial akses seperti Pasangan AccessKey atau Token Layanan Keamanan (STS). Untuk mencegah kebocoran pasangan AccessKey, Anda dapat mencatat pasangan AccessKey dalam variabel lingkungan. Informasi lebih lanjut tentang solusi keamanan lainnya dapat ditemukan di Solusi Keamanan Kredensial. Dalam contoh ini, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET digunakan untuk mencatat pasangan AccessKey.

Konfigurasikan variabel lingkungan di Linux dan macOS

Konfigurasikan variabel lingkungan menggunakan perintah export

Penting

Variabel lingkungan sementara yang dikonfigurasi menggunakan perintah export hanya valid untuk sesi saat ini. Setelah keluar dari sesi, variabel lingkungan menjadi tidak valid. Untuk konfigurasi permanen, tambahkan perintah export ke file konfigurasi startup sistem operasi yang sesuai.

  • Konfigurasikan ID AccessKey dan tekan Enter.

    # Ganti <ACCESS_KEY_ID> dengan ID AccessKey Anda. 
    export ALIBABA_CLOUD_ACCESS_KEY_ID=yourAccessKeyID
  • Konfigurasikan Rahasia AccessKey dan tekan Enter.

    # Ganti <ACCESS_KEY_SECRET> dengan Rahasia AccessKey Anda. 
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=yourAccessKeySecret
  • Periksa apakah konfigurasi berhasil.

    Jalankan perintah echo $ALIBABA_CLOUD_ACCESS_KEY_ID. Jika ID AccessKey yang valid dikembalikan, variabel lingkungan telah dikonfigurasi.

Konfigurasikan variabel lingkungan di Windows

Gunakan GUI

  • Prosedur

    Untuk menggunakan GUI dalam mengonfigurasi variabel lingkungan di Windows 10, ikuti langkah-langkah berikut:

    Di desktop Windows, klik kanan PC Ini dan pilih Properti. Di halaman yang muncul, klik Pengaturan Sistem Lanjutan. Di kotak dialog Properti Sistem, klik Variabel Lingkungan pada tab Lanjutan. Di kotak dialog Variabel Lingkungan, klik Baru di bagian Variabel Pengguna atau Variabel Sistem. Kemudian, konfigurasikan variabel yang dijelaskan dalam tabel berikut.

    Variabel

    Contoh

    ID AccessKey

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_ID

    • Nilai variabel: LTAI****************

    Rahasia AccessKey

    • Nama variabel: ALIBABA_CLOUD_ACCESS_KEY_SECRET

    • Nilai variabel: yourAccessKeySecret

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Mulai atau tekan Win + R. Di kotak dialog Jalankan, masukkan cmd. Lalu, klik OK atau tekan Enter. Di halaman yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan CMD

  • Prosedur

    Buka jendela Command Prompt sebagai administrator dan jalankan perintah berikut untuk menambahkan variabel lingkungan di sistem operasi:

    setx ALIBABA_CLOUD_ACCESS_KEY_ID yourAccessKeyID /M
    setx ALIBABA_CLOUD_ACCESS_KEY_SECRET yourAccessKeySecret /M

    /M menunjukkan bahwa variabel lingkungan bersifat tingkat sistem. Anda dapat memilih untuk tidak menggunakan parameter ini saat mengonfigurasi variabel lingkungan tingkat pengguna.

  • Periksa apakah konfigurasi berhasil.

    Di desktop Windows, klik Mulai atau tekan Win + R. Di kotak dialog Jalankan, masukkan cmd. Lalu, klik OK atau tekan Enter. Di halaman yang muncul, jalankan perintah echo %ALIBABA_CLOUD_ACCESS_KEY_ID% dan echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan Windows PowerShell

Di PowerShell, konfigurasikan variabel lingkungan baru. Variabel lingkungan berlaku untuk semua sesi baru.

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::User)

Konfigurasikan variabel lingkungan untuk semua pengguna. Anda harus menjalankan perintah berikut sebagai administrator.

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'yourAccessKeyID', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'yourAccessKeySecret', [System.EnvironmentVariableTarget]::Machine)

Konfigurasikan variabel lingkungan sementara. Variabel lingkungan hanya berlaku untuk sesi saat ini.

$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "yourAccessKeyID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "yourAccessKeySecret"

Di PowerShell, jalankan perintah Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID dan Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET. Jika pasangan AccessKey yang valid dikembalikan, konfigurasi berhasil.

Gunakan SDK

Dalam contoh ini, operasi API SendMessageToGlobe dari Short Message Service (SMS) dipanggil. Informasi lebih lanjut tentang SendMessageToGlobe dapat ditemukan di SendMessageToGlobe.

1. Inisialisasi klien permintaan

Di SDK, semua permintaan ke operasi API dikirim melalui klien. Sebelum memanggil operasi API, Anda harus menginisialisasi klien permintaan. Ada beberapa metode untuk menginisialisasi klien permintaan. Dalam contoh ini, pasangan AccessKey digunakan untuk menginisialisasi klien permintaan. Informasi lebih lanjut dapat ditemukan di Kelola Kredensial Akses.

Penting
  • Objek klien, seperti Dysmsapi20180501 instance, aman thread dan dapat digunakan di lingkungan multithread tanpa risiko keamanan. Anda tidak perlu membuat instance untuk setiap thread.

  • Dalam proyek pengembangan, disarankan untuk tidak sering menggunakan kata kunci baru untuk membuat objek klien. Hal ini dapat meningkatkan pemborosan sumber daya dan menurunkan performa layanan. Disarankan untuk mengenkapsulasi klien dalam mode singleton. Ini memastikan bahwa hanya satu instance Client yang diinisialisasi untuk kredensial akses dan titik akhir yang sama sepanjang siklus hidup aplikasi.

TypeScript

import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';

export default class Client {

  static createClient(): Dysmsapi20180501 {
    let config = new $OpenApi.Config({
      // Diperlukan, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Diperlukan, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501(config);
  }
}

Node.js

const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Tea = require('@alicloud/tea-typescript');

class Client {

  static createClient() {
    let config = new OpenApi.Config({
      // Diperlukan, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel.
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Diperlukan, pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel.
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Lihat https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501.default(config);
  }
}

2. Buat objek permintaan

Saat memanggil operasi API untuk melewati parameter, Anda harus menggunakan objek permintaan yang disediakan oleh SDK. Beri nama objek permintaan operasi API dalam format berikut: <Nama Operasi API>Request. Misalnya, objek permintaan operasi SendSms adalah SendSmsRequest. Informasi lebih lanjut tentang parameter dapat ditemukan di referensi API. Untuk informasi lebih lanjut tentang parameter operasi SendMessageToGlobe, lihat SendMessageToGlobe.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu membuat objek permintaan. Misalnya, operasi DescribeCdnSubList tidak mendukung parameter permintaan.

TypeScript

 // Buat objek permintaan dan atur parameter input yang diperlukan
 let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
      // Harap ganti dengan nomor penerima aktual.
      to: "<YOUR_VALUE>",
      // Harap ganti dengan konten SMS aktual.
      message: "<YOUR_VALUE>",
    });

Node.js

// Buat objek permintaan dan atur parameter input yang diperlukan
let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
    // Harap ganti dengan nomor penerima aktual.
    to: '<YOUR_VALUE>',
    // Harap ganti dengan konten SMS aktual.
    message: '<YOUR_VALUE>',
});

3. Mulai permintaan API

Saat menggunakan klien permintaan untuk memanggil operasi API, disarankan memberi nama fungsi dalam format berikut: <Nama Operasi API>WithOptions. Tentukan <Nama Operasi API> dalam camel case. Fungsi ini berisi dua parameter: objek permintaan dan parameter runtime. Objek permintaan dibuat pada langkah sebelumnya. Parameter runtime digunakan untuk menentukan tindakan permintaan, seperti timeout dan konfigurasi proxy. Informasi lebih lanjut dapat ditemukan di Konfigurasi Lanjutan.

Catatan

Jika operasi API tidak mendukung parameter permintaan, Anda tidak perlu menentukan objek permintaan dalam permintaan. Misalnya, Anda hanya perlu menentukan parameter runtime saat memanggil operasi DescribeCdnSubList.

TypeScript

// Buat parameter runtime.
let runtime = new $Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

Node.js

// Buat parameter runtime.
let runtime = new Util.RuntimeOptions({ });
let client = Client.createClient();
// Kirim permintaan.
await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);

4. Tangani kesalahan

Alibaba Cloud SDK V2.0 untuk Node.js mengklasifikasikan pengecualian ke dalam jenis berikut:

  • UnretryableError: Dalam banyak kasus, jenis pengecualian ini disebabkan oleh masalah jaringan. UnretryableError dilemparkan jika jumlah percobaan ulang mencapai batas atas. Anda dapat menggunakan err.data.lastRequest untuk mendapatkan informasi permintaan saat pengecualian terjadi.

  • ResponseError: Dalam banyak kasus, jenis pengecualian ini disebabkan oleh kesalahan bisnis.

Informasi lebih lanjut tentang cara menangani pengecualian SDK dapat ditemukan di Penanganan Pengecualian.

Penting

Disarankan untuk mengambil langkah-langkah penanganan pengecualian yang tepat, seperti melaporkan pengecualian, mencatat pengecualian, dan melakukan percobaan ulang, untuk memastikan ketahanan dan stabilitas sistem Anda.

Klik untuk melihat kode sampel lengkap

Contoh: Panggil operasi SendMessageToGlobe

TypeScript

import Dysmsapi20180501, * as $Dysmsapi20180501 from '@alicloud/dysmsapi20180501';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util, * as $Util from '@alicloud/tea-util';

export default class Client {

  static createClient(): Dysmsapi20180501 {
    let config = new $OpenApi.Config({
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Titik akhir SMS. Untuk informasi lebih lanjut, kunjungi https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501(config);
  }

  static async main(): Promise<void> {
    let client = Client.createClient();
    // Buat objek permintaan dan tentukan parameter.
    let sendMessageToGlobeRequest = new $Dysmsapi20180501.SendMessageToGlobeRequest({
      to: "<YOUR_VALUE>",
      from: "<YOUR_VALUE>",
      message: "<YOUR_VALUE>",
    });
    let runtime = new $Util.RuntimeOptions({ });
    try {
      // Mulai permintaan.  
      await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
    } catch (error) {
      // Tangani pengecualian dengan hati-hati dalam skenario bisnis nyata dan jangan pernah abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan ditampilkan di konsol. 
      // Kembalikan pesan kesalahan.
      console.log(error.message);
      // URL halaman diagnostik kesalahan yang sesuai.
      console.log(error.data["Recommend"]);
    }    
  }
}

Client.main();

Node.js

const Dysmsapi20180501 = require('@alicloud/dysmsapi20180501');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');

class Client {

  static createClient() {
    let config = new OpenApi.Config({
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    // Titik akhir SMS. Untuk informasi lebih lanjut, kunjungi https://api.alibabacloud.com/product/Dysmsapi.
    config.endpoint = `dysmsapi.aliyuncs.com`;
    return new Dysmsapi20180501.default(config);
  }

  static async main() {
    // Buat objek permintaan dan tentukan parameter.
    let client = Client.createClient();
    let sendMessageToGlobeRequest = new Dysmsapi20180501.SendMessageToGlobeRequest({
      to: '<YOUR_VALUE>',
      from: '<YOUR_VALUE>',
      message: '<YOUR_VALUE>',
    });
    let runtime = new Util.RuntimeOptions({ });
    try {
      // Mulai permintaan.
      await client.sendMessageToGlobeWithOptions(sendMessageToGlobeRequest, runtime);
    } catch (error) {
      // Tangani pengecualian dengan hati-hati dalam skenario bisnis nyata dan jangan pernah abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan ditampilkan di konsol. 
      // Kembalikan pesan kesalahan.
      console.log(error.message);
      // URL halaman diagnostik kesalahan yang sesuai.
      console.log(error.data["Recommend"]);
      Util.default.assertAsString(error.message);
    }    
  }
}

exports.Client = Client;
Client.main();

Skenario khusus: Unggah file melalui operasi Advance

Saat menggunakan Image Search atau Visual Intelligence API (VIAPI) untuk memproses gambar pada mesin lokal atau mengunggah gambar, API dari Image Search atau VIAPI yang dijelaskan dalam dokumentasi tidak mendukung pengunggahan langsung. Untuk mengunggah gambar, Anda perlu menggunakan operasi Advance, yang mendukung transmisi aliran file. Layanan cloud menyimpan sementara file yang diunggah di Object Storage Service (OSS), dan membaca file sementara dari OSS jika diperlukan. Wilayah OSS default adalah cn-shanghai. Contoh berikut menunjukkan cara memanggil operasi DetectBodyCount dari VIAPI:

Penting

File sementara di OSS secara berkala dibersihkan.

  1. Inisialisasi Klien Permintaan

    Pastikan bahwa parameter regionId dan endpoint layanan cloud ditentukan. regionId menunjukkan wilayah OSS tempat file sementara disimpan. Jika Anda tidak mengonfigurasi parameter regionId, layanan cloud mungkin menggunakan wilayah yang berbeda dari OSS, yang mengakibatkan timeout API.

    TypeScript

    function createClient(): facebody20191230 {
        let config = new $OpenApi.Config({
            // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
            accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
            accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        });
        // Tentukan wilayah yang sama untuk parameter endpoint dan regionId.
        config.regionId = 'cn-shanghai';
        config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
        return new facebody20191230(config);
    }

    Node.js

    function createClient() {
      let config = new OpenApi.Config({
        // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
        accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
        // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
        accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
      });
      // Tentukan wilayah yang sama untuk parameter endpoint dan regionId.
      config.regionId = 'cn-shanghai';
      config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
      return new facebody20191230.default(config);
    }
  2. Buat Objek Permintaan

    Buat objek permintaan <Operasi API>AdvanceRequest untuk melewati aliran file. Di objek permintaan, atur nama parameter menjadi ImageURLObject.

    TypeScript

        // Baca file sebagai aliran fileStream.
        const filePath = '<FILE_PATH>';  // Ganti nilai dengan jalur file aktual.
        // Periksa file.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan kesalahan aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Kesalahan aliran file:', err);
            process.exit(1);
        });
    
        let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({
          imageURLObject: fileStream,
        });

    Node.js

        // Baca file sebagai aliran fileStream.
        const filePath = '<FILE_PATH>';  // Ganti nilai dengan jalur file aktual.
        // Periksa file.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan kesalahan aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Kesalahan aliran file:', err);
            process.exit(1);
        });
    
        let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({
            imageURLObject: fileStream,
        });
  3. Mulai Permintaan

    Panggil operasi <Operasi API>AdvanceRequest.

    TypeScript

    // Konfigurasikan parameter runtime.
    let runtime = new $Util.RuntimeOptions({ });
    let client = Client.createClient();
    // Kirim permintaan.   
    await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);

    Node.js

     // Konfigurasikan parameter runtime.
     let runtime = new Util.RuntimeOptions({ });
     let client = Client.createClient();
     // Kirim permintaan.   
     await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);  

Klik untuk Melihat Kode Sampel Lengkap

TypeScript

import { default as facebody20191230 } from '@alicloud/facebody20191230';
import * as $facebody20191230 from '@alicloud/facebody20191230';
import * as $OpenApi from '@alicloud/openapi-client';
import * as $Util from '@alicloud/tea-util';
import * as fs from "fs";

export default class Client {
    static createClient(): facebody20191230 {
        let config = new $OpenApi.Config({
            // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
            accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
            accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
        });
        config.regionId = 'cn-shanghai';
        config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
        return new facebody20191230(config);
    }

    static async main(): Promise<void> {
        let client = Client.createClient();

        // Baca file sebagai aliran fileStream.
        const filePath = '<FILE_PATH>';  // Ganti nilai dengan jalur file aktual.
        // Periksa file.
        if (!fs.existsSync(filePath)) {
            console.error('File tidak ada:', filePath);
            return;
        }
        // Buat aliran dan dengarkan kesalahan aliran.
        const fileStream = fs.createReadStream(filePath).on('error', (err) => {
            console.error('Kesalahan aliran file:', err);
            process.exit(1);
        });

        let detectBodyCountAdvanceRequest = new $facebody20191230.DetectBodyCountAdvanceRequest({
            imageURLObject: fileStream,
        });
        let runtime = new $Util.RuntimeOptions({});
        try {
            // Kirim permintaan.
            const res = await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
            console.log(res);
        } catch (error) {
            if (error instanceof Error) {
                console.error('Pesan kesalahan:', error.message);
                const data = (error as any)?.data?.Recommend;
                if (typeof data === 'string') {
                    console.log('Saran:', data);
                }
            }
        }
    }
}

Client.main();

Node.js

'use strict';
const facebody20191230 = require('@alicloud/facebody20191230');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const fs = require('fs');

class Client {
  static createClient() {
    let config = new OpenApi.Config({
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID. 
      accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
      // Diperlukan. Pastikan variabel lingkungan berikut disetel di lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
      accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    });
    config.regionId = 'cn-shanghai';
    config.endpoint = 'facebody.cn-shanghai.aliyuncs.com';
    return new facebody20191230.default(config);
  }

  static async main() {
    let client = Client.createClient();
    // Baca file sebagai aliran fileStream.
    const filePath = '<FILE_PATH>';  // Ganti nilai dengan jalur file aktual.
    // Periksa file.
    if (!fs.existsSync(filePath)) {
      console.error('File tidak ada:', filePath);
      return;
    }
    // Buat aliran dan dengarkan kesalahan aliran.
    const fileStream = fs.createReadStream(filePath).on('error', (err) => {
      console.error('Kesalahan aliran file:', err);
      process.exit(1);
    });
    // Konfigurasikan parameter permintaan.
    let detectBodyCountAdvanceRequest = new facebody20191230.DetectBodyCountAdvanceRequest({
      imageURLObject: fileStream,
    });
    let runtime = new Util.RuntimeOptions({});
    try {
      // Kirim permintaan.
      const res = await client.detectBodyCountAdvance(detectBodyCountAdvanceRequest, runtime);
      console.log(res);
    } catch (error) {
      // Tangani pengecualian dengan hati-hati berdasarkan skenario bisnis nyata Anda dan jangan abaikan pengecualian dalam proyek Anda. Pesan kesalahan yang ditampilkan dalam contoh ini hanya untuk referensi. 
      console.log(error);
    }
  }
}

exports.Client = Client;
Client.main();

FAQ

  1. Bagaimana cara menangani kesalahan "Anda tidak memiliki otorisasi untuk melakukan operasi ini" yang dilemparkan oleh operasi API?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Pasangan AccessKey dari pengguna Resource Access Management (RAM) tidak memiliki izin untuk memanggil operasi API.

    Solusi: Berikan izin yang diperlukan kepada pengguna RAM. Informasi lebih lanjut dapat ditemukan di Berikan Izin kepada Pengguna RAM.

    Sebagai contoh, jika kesalahan "Anda tidak memiliki otorisasi untuk melakukan operasi ini" dilemparkan oleh operasi API SendMessageToGlobe, buat kebijakan kustom berikut untuk memberikan izin yang diperlukan kepada pengguna RAM:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "dysms:SendMessageToGlobe",
          "Resource": "*"
        }
      ]
    }
  2. Bagaimana cara menangani kesalahan titik akhir "triggerUncaughtException Error: getaddrinfo ENOTFOUND" yang dilemparkan oleh operasi API?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Operasi API tidak mendukung titik akhir yang Anda tentukan saat menginisialisasi klien permintaan.

    Solusi: Tentukan titik akhir yang didukung dan coba lagi. Informasi lebih lanjut dapat ditemukan di Konfigurasikan Titik Akhir.

  3. Bagaimana cara menangani kesalahan AccessKey "Cannot read properties of undefined (reading 'getCredential')" atau "InvalidAccessKeyId.NotFound: code: 404" yang dilemparkan oleh operasi API?

    Penyebab dan Solusi yang Mungkin

    Penyebab yang Mungkin: Pasangan AccessKey tidak benar dilewatkan ke permintaan.

    Solusi: Pastikan pasangan AccessKey benar dilewatkan saat Anda menginisialisasi klien permintaan. Nilai XXX dari process.env("XXX") diperoleh dari variabel lingkungan.

Informasi lebih lanjut tentang cara menangani pengecualian SDK dapat ditemukan di FAQ.