Topik ini menjawab pertanyaan umum terkait integrasi dan penggunaan Alibaba Cloud SDK untuk Node.js, membantu meningkatkan efisiensi pengembangan.
Prasyarat
Node.js 8.x atau versi lebih baru telah terpasang di lingkungan pengembangan Anda.
API Alibaba Cloud dapat diakses melalui jaringan Anda.
Ikhtisar
Pertanyaan dan solusi
Bagaimana cara menangani kesalahan AccessKey?
Masalah: Pesan kesalahan berikut muncul setelah menjalankan kode, menunjukkan bahwa pasangan AccessKey tidak dikonfigurasi dengan benar.
Alibaba Cloud SDK V2.0 untuk Node.js: Tidak dapat membaca properti dari undefined (membaca 'getCredential').
Alibaba Cloud SDK V1.0 untuk Node.js: AssertionError [ERR_ASSERTION]: harus melewati "config.accessKeyId".
Solusi:
Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi.
Linux/macOS
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRETWindows
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%Jika pasangan AccessKey yang valid dikembalikan, variabel lingkungan telah dikonfigurasi dengan benar. Jika tidak ada pasangan AccessKey atau pasangan AccessKey yang tidak valid dikembalikan, konfigurasikan variabel lingkungan sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
Periksa kesalahan terkait pasangan AccessKey dalam kode.
Contoh permintaan kesalahan:
let config = new OpenApi.Config({ accessKeyId: process.env['yourAccessKeyID'], accessKeySecret: process.env['yourAccessKeySecret'], });Contoh permintaan sukses:
let config = new OpenApi.Config({ accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'], accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'], });Catatanprocess.env['ALIBABA_CLOUD_ACCESS_KEY_ID'] dan process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
menunjukkan bahwa ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
PentingUntuk mencegah risiko keamanan, jangan tuliskan pasangan AccessKey dalam kode online.
Apa yang harus saya lakukan jika pesan kesalahan "tsc: Gagal mengenali perintah tsc sebagai nama cmdlet, fungsi, skrip, atau program yang dapat dieksekusi..." muncul setelah saya menjalankan perintah tsc?

Penyebab:
Variabel lingkungan PATH tidak dikonfigurasi dengan benar: Jalur file
tscyang diinstal secara global tidak ditambahkan ke variabel lingkungan PATH.Kebijakan eksekusi PowerShell: Kebijakan eksekusi default PowerShell mungkin disetel ke
Restricted, yang melarang menjalankan skrip.ps1.Variabel lingkungan PATH tidak dikonfigurasi dengan benar: Jalur file
tscyang diinstal secara global, sepertiD:\node.js\node_global, tidak ditambahkan ke variabel lingkungan PATH.
Solusi:
Periksa apakah
TypeScripttelah diinstal secara global:npm list -g typescriptJika output kosong atau menunjukkan bahwa TypeScript belum diinstal, TypeScript tidak diinstal dengan benar.
Jalankan perintah
npm install -g typescriptuntuk menginstal TypeScript secara global.Jalankan perintah berikut untuk menanyakan jalur instalasi global
npm:npm config get prefix # Contoh output: D:\node.js\node_globalTambahkan jalur yang dikembalikan dalam perintah berikut untuk memeriksa apakah file
tscada di direktori:ls D:\node.js\node_global | Select-String 'tsc'Jalankan perintah berikut untuk menanyakan kebijakan eksekusi
PowerShell:Get-ExecutionPolicyJika output adalah
Restricted, PowerShell melarang menjalankan skrip.Ubah kebijakan eksekusi menjadi
RemoteSigneduntuk mengizinkan eksekusi skrip.Set-ExecutionPolicy RemoteSigned -Scope CurrentUserJalankan perintah
Get-ExecutionPolicylagi untuk menanyakan kebijakan eksekusi. Output yang diharapkan adalahRemoteSigned.Tentukan variabel lingkungan PATH untuk sesi saat ini di terminal Anda:
$env:Path += ";D:\node.js\node_global"Periksa apakah variabel lingkungan PATH berisi jalur global:
$env:Path -split ';' | Select-String 'node_global'Jalankan perintah
tscuntuk mengompilasi file TypeScript.tsmenjadi file JavaScript.jsberdasarkan file konfigurasitsconfig.json.
Ganti jalur D:\node.js\node_global dalam contoh dengan jalur file sebenarnya yang dikembalikan oleh perintah npm config get prefix.
Apa yang harus saya lakukan jika permintaan API kehabisan waktu dan pesan "Error: connect ETIMEDOUT" dikembalikan?
Penyebab umum dan solusi:
Timeout panggilan API dapat disebabkan oleh beberapa faktor. Bagian berikut menjelaskan penyebab umum dan solusi yang sesuai:
Penyebab 1: Masalah koneksi jaringan
Penyebab: Permintaan tidak dapat mencapai server karena koneksi jaringan antara klien dan server gagal atau jaringan tidak stabil.
Solusi:
Jalankan perintah ping atau curl untuk menguji konektivitas antara host lokal dan titik akhir layanan cloud. Sebagai contoh, jalankan perintah ping dysmsapi.aliyuncs.com atau curl -v https://dysmsapi.aliyuncs.com untuk menguji konektivitas antara host lokal Anda dan titik akhir API Layanan Pesan Singkat (SMS).
Jika perintah kehabisan waktu atau tidak menerima respons, periksa kebijakan pemblokiran pada firewall atau router lokal Anda.
Jika respons dikembalikan, kami sarankan Anda menentukan periode timeout yang tepat untuk mencegah kegagalan permintaan yang disebabkan oleh konfigurasi timeout yang tidak tepat. Untuk informasi lebih lanjut, lihat Konfigurasikan periode timeout. Contoh kode:
JavaScript
// Buat instance RuntimeOptions dan tentukan parameter runtime. const runtime = new RuntimeOptions({ // Konfigurasikan periode timeout untuk permintaan koneksi. connectTimeout: 10000, });TypeScript
// Buat instance RuntimeOptions dan tentukan parameter runtime. const runtime = new $Util.RuntimeOptions({ // Konfigurasikan periode timeout untuk permintaan koneksi. connectTimeout: 10000, });
Penyebab 2: Waktu pemrosesan permintaan yang lama
Deskripsi: Durasi pemrosesan permintaan API melebihi periode timeout baca yang ditentukan.
Solusi: Konfigurasikan periode timeout untuk menyesuaikan dengan waktu respons API yang diperpanjang. Untuk informasi lebih lanjut, lihat Konfigurasikan periode timeout. Sebagai contoh, Anda dapat mengonfigurasi parameter timeout baca untuk memperpanjang periode timeout baca. Contoh kode:
JavaScript
// Buat instance RuntimeOptions dan tentukan parameter runtime.
const runtime = new RuntimeOptions({
// Konfigurasikan periode timeout untuk permintaan baca.
readTimeout: 10000,
});TypeScript
// Buat instance RuntimeOptions dan tentukan parameter runtime.
const runtime = new $Util.RuntimeOptions({
// Konfigurasikan periode timeout untuk permintaan baca.
readTimeout: 10000,
});Apa yang harus saya lakukan jika kesalahan "MissingRequiredParameter" dilaporkan saat saya memanggil operasi API?
Dalam contoh ini, operasi SendSms dari layanan Short Message Service (SMS) dipanggil.
Masuk ke OpenAPI Explorer. Buka halaman debugging API dari layanan Alibaba Cloud yang ingin Anda panggil. Temukan operasi API yang ingin Anda panggil.
Periksa apakah semua parameter yang diperlukan seperti phoneNumbers dan signName telah ditentukan dalam objek permintaan yang dibuat. Dalam contoh ini, objek
SendSmsRequestdigunakan.Verifikasi bahwa semua parameter yang diperlukan telah ditentukan berdasarkan referensi API.
Pastikan nilai parameter yang diperlukan valid. Sebagai contoh, periksa apakah nomor ponsel ditentukan dalam format yang valid.
Sebelum SDK mengirimkan permintaan API, SDK secara otomatis memverifikasi parameter. Jika satu atau lebih parameter yang diperlukan tidak ditentukan, kesalahan seperti
MissingRequiredParameterdilaporkan. Sebagai contoh, jika parameter phoneNumbers tidak ditentukan, kesalahan "MissingPhoneNumbers: code: 400" dilaporkan. Dalam kasus ini, tentukan parameter berdasarkan pesan kesalahan.

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>",
});Apa yang harus saya lakukan jika gagal memanggil operasi API karena operasi tidak didukung di wilayah tertentu dan pesan "getaddrinfo ENOTFOUND" dikembalikan?
Pastikan wilayah yang Anda pilih mendukung layanan yang ingin Anda akses. Temukan titik akhir layanan di halaman produk di OpenAPI Explorer. Gambar berikut menunjukkan cara menemukan titik akhir layanan SMS.

Bagaimana cara menangani kesalahan yang dilaporkan oleh perintah npm install?
Pastikan Node.js dan npm telah diinstal dengan benar. Untuk informasi lebih lanjut, lihat Instal Node.js di Windows.
Penyebab potensial:
Konfigurasi sumber gambar mengandung konflik. Konfigurasi npm global menggunakan sumber gambar pihak ketiga, seperti Taobao, tetapi tidak ada sumber resmi independen yang dikonfigurasi untuk ruang lingkup
@alicloud.Masalah cache atau jaringan menyebabkan kerusakan pada cache lokal npm, atau kebijakan jaringan seperti firewall perusahaan memblokir permintaan ke sumber gambar.
Versi paket tidak ada. Sebagai contoh, versi yang ditentukan
3.1.1tidak ada di sumber gambar.
Solusi:
Jalankan perintah berikut untuk membersihkan cache npm untuk memperbaiki kerusakan cache, lalu instal ulang SDK.
npm cache clean --forceGunakan sumber npm resmi.
Konfigurasikan sumber resmi untuk ruang lingkup
@alicloud. Jalankan perintah berikut untuk mengonfigurasi sumber npm hanya untuk paket yang dimulai dengan@alicloud.npm config set @alicloud:registry=https://registry.npmjs.orgJalankan perintah berikut untuk memeriksa konfigurasi npm, dan pastikan ruang lingkup berlaku:
npm config get @alicloud:registry # Output yang diharapkan: https://registry.npmjs.orgJalankan perintah
npm install @alicloud/XXXuntuk menginstal Alibaba Cloud SDK.
Periksa sumber gambar Alibaba Cloud. Jalankan perintah berikut untuk sementara beralih ke sumber gambar yang diinginkan (opsional):
# Dalam contoh ini, SDK SMS diinstal. npm install @alicloud/dysmsapi20170525@3.1.1 --registry=https://registry.npmmirror.com
Setelah SDK diinstal, npm mengembalikan pesan, seperti 9 vulnerabilities (6 moderate, 3 high). Penyebab dan solusi:
Penyebab: Paket dependensi pihak ketiga SDK, seperti axios atau lodash, sudah usang dan mengandung kerentanan yang diketahui.
Solusi: Jalankan perintah npm audit fix untuk memulai perbaikan otomatis. npm secara otomatis meningkatkan ke versi kompatibel yang mengandung lebih sedikit atau tanpa kerentanan.
Bagaimana cara menyelesaikan konflik versi paket dependensi?
Jalankan perintah
npm lsuntuk melihat pohon dependensi dan pastikan tidak ada konflik versi.Hapus direktori
node_modulesdan filepackage-lock.jsondan instal ulang dependensi.
rm -rf node_modules package-lock.json
npm installDaftar periksa pengecualian dasar Node.js
Pesan Kesalahan | Penyebab Potensial | Solusi |
TypeError | Tipe variabel atau ekspresi tidak sesuai harapan. | Verifikasi bahwa tipe variabel atau ekspresi sesuai harapan. Anda dapat menggunakan pernyataan kondisional atau metode pemeriksaan tipe seperti typeof untuk menangani pengecualian ini. |
SyntaxError | Sintaks kode tidak valid. | Verifikasi bahwa sintaks kode benar. Anda dapat menggunakan editor kode atau alat pengembangan untuk mendeteksi dan memperbaiki kesalahan sintaks. |
ReferenceError | Variabel yang dirujuk tidak ada. | Pastikan variabel yang ingin Anda rujuk telah didefinisikan dan diinisialisasi. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian ini. |
RangeError | Nilai yang ditentukan berada di luar rentang valid. Sebagai contoh, indeks array berada di luar rentang atau fungsi rekursif dipanggil terlalu banyak kali. | Pastikan nilai yang ditentukan, seperti indeks array atau kedalaman fungsi rekursif, berada dalam rentang valid. Anda dapat menggunakan pernyataan kondisional atau mekanisme penanganan pengecualian untuk menangani pengecualian ini. |
URIError | URI tidak valid atau terjadi kesalahan selama pengkodean. | Pastikan Anda menggunakan URI yang valid atau pengkodean dilakukan sesuai dengan spesifikasi terkait. Anda dapat menggunakan pernyataan kondisional atau metode pengkodean URI tertentu untuk menangani pengecualian ini. |
Dukungan teknis
Solusi untuk masalah-masalah di atas dapat membantu Anda menggunakan Alibaba Cloud SDK dengan lebih baik. Jika Anda mengalami masalah lain, Anda dapat menghubungi dukungan teknis Alibaba Cloud menggunakan metode berikut: