Untuk meneruskan argumen baris perintah ke program Node.js saat Anda men-debug-nya di Mac, tambahkan larik args ke konfigurasi peluncuran VS Code miliknya. Tempatkan setiap argumen dalam string-nya masing-masing, lalu jalankan konfigurasi tersebut dengan F5. Langkah ini akan meneruskan nilai secara langsung ke program; ini tidak membuat zsh menginterpretasikan larik tersebut sebagai perintah shell.
Tambahkan larik args ke launch.json
Buka folder proyek di VS Code. Jika belum memiliki konfigurasi peluncuran, buka Jalankan dan Debug (Run and Debug) dengan ⇧⌘D, pilih create a launch.json file, lalu pilih debugger untuk runtime Anda. VS Code akan menyimpan konfigurasi ruang kerja di .vscode/launch.json. Permintaan launch akan memulai proses baru; permintaan attach terhubung ke proses yang sudah berjalan, jadi gunakan launch saat VS Code perlu memulai program dengan argumen Anda. Mengonfigurasi penelusuran kesalahan di Visual Studio Code
Untuk contoh konkret ini, asumsikan ruang kerja berisi app.js, dan Anda ingin menjalankannya dengan --input diikuti oleh jalur file yang mungkin memuat spasi, ditambah flag --verbose. Tambahkan atau sesuaikan konfigurasi ini di dalam larik configurations:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug app with input file",
"program": "${workspaceFolder}/app.js",
"cwd": "${workspaceFolder}",
"args": [
"--input",
"${workspaceFolder}/data files/input.txt",
"--verbose"
]
}
]
}
Pilih Debug app with input file pada pemilih konfigurasi Jalankan dan Debug, lalu tekan F5. program menentukan titik masuk JavaScript, cwd menyetel direktori kerja, dan args menyediakan nilai baris perintah tambahan. Ekstensi debugger menentukan properti yang didukung untuk setiap runtime; periksa IntelliSense di launch.json jika Anda menggunakan debugger lain atau melihat kesalahan validasi. Mengonfigurasi penelusuran kesalahan di Visual Studio Code
Menjaga spasi dan karakter khusus tetap utuh
Dalam args bernilai larik, setiap elemen mewakili satu argumen. Dokumentasi VS Code menyatakan bahwa jalur yang memuat spasi akan tetap berupa string tunggal setelah substitusi variabel. Oleh karena itu, jalur file pada contoh di atas adalah satu argumen; jangan menambahkan tanda kutip escaped di sekelilingnya hanya untuk mempertahankan spasi. ${workspaceFolder} merujuk ke folder yang dibuka di VS Code, yang membuat jalur tetap terikat pada proyek. Referensi variabel
Hal ini berbeda dengan mengetikkan perintah di Terminal. macOS menggunakan zsh sebagai shell default Terminal, tetapi larik args pada konfigurasi peluncuran mewakili argumen untuk proses target. Sintaks shell seperti *, >, atau | tidak diekspansi atau dieksekusi secara otomatis di sana. Sebagai contoh, jika program Anda mengharapkan nilai harfiah a&b.txt, tuliskan itu sebagai satu string JSON: "a&b.txt". Untuk ekspansi atau pengalihan (redirection) shell, target harus dijalankan secara eksplisit melalui shell, dan perilaku pastinya bergantung pada ekstensi debugger; VS Code mencatat bahwa tidak ada sintaks pengalihan universal untuk semua konfigurasi debug. Apple: Mengubah shell default di Terminal di Mac dan Mengonfigurasi penelusuran kesalahan di Visual Studio Code
Konfirmasi apa yang diterima program
Untuk Node.js, proses mengekspos argumen peluncuran melalui process.argv. Entri pertama mewakili executable Node dan jalur skrip; entri selebihnya adalah nilai tambahan. Untuk memeriksanya sementara, tambahkan baris ini ke app.js:
console.log(process.argv);
Dengan konfigurasi contoh, output seharusnya mencakup --input, jalur terurai yang berakhiran data files/input.txt, dan --verbose sebagai entri terpisah. Ini adalah cara praktis untuk mengetahui apakah masalah terletak pada konfigurasi VS Code atau pada penguraian argumen program. Hapus atau sesuaikan output diagnostik ini setelah Anda mengonfirmasi nilainya. Node.js: Process
Meminta nilai setiap kali Anda men-debug
Jika nilainya berubah di antara proses debug, VS Code mendukung variabel input promptString di launch.json. Tambahkan larik inputs pada tingkat teratas yang sama dengan configurations, lalu rujuk input tersebut di dalam args:
"args": ["--input", "${input:inputFile}"],
"inputs": [
{
"id": "inputFile",
"type": "promptString",
"description": "Path to the input file",
"default": "data files/input.txt"
}
]
Perintah (prompt) akan mengembalikan string, yang kemudian disubstitusikan ke dalam elemen argumen. Cara ini berguna untuk nilai sederhana yang bervariasi di setiap sesi debug. Sarang variabel input (nesting) tidak didukung, dan prompt input tidak menguraikan baris perintah shell menjadi beberapa argumen. Jika Anda memerlukan beberapa nilai, tentukan beberapa elemen larik atau gunakan pendekatan khusus debugger yang lebih sesuai. Referensi variabel
Memecahkan masalah argumen yang tampak hilang
Pertama, pastikan konfigurasi yang tepat telah dipilih dan permintaannya adalah launch. Kemudian periksa apakah daftar argumen berada di dalam properti args yang didukung debugger, apakah tanda koma dan tanda kutipnya membentuk JSON yang valid, serta apakah program Anda memang mengharapkan nilai-nilai tersebut dalam urutan yang diberikan. Periksa juga cwd: jalur relatif diinterpretasikan oleh program terkait dengan direktori kerjanya, sedangkan ${workspaceFolder} menyediakan titik awal root proyek. VS Code menyarankan untuk memeriksa program, cwd, args, dan properti yang didukung debugger yang dipilih jika peluncuran tidak berjalan seperti yang diharapkan. Mengonfigurasi penelusuran kesalahan di Visual Studio Code
Untuk proses debug Mac yang dapat diulang dengan konsisten, simpan argumen di konfigurasi peluncuran ruang kerja, gunakan satu elemen larik JSON per nilai yang dimaksudkan, dan periksa apa yang sebenarnya diterima runtime Anda. Perlakukan pengutipan shell sebagai persoalan terpisah: ini berlaku saat shell menguraikan suatu perintah, sedangkan args adalah konfigurasi untuk program yang diluncurkan.
Sumber
Mengonfigurasi penelusuran kesalahan di Visual Studio Code — Microsoft
Referensi variabel — Microsoft
Process — Node.js