Bagaimana untuk mendapatkan kod keluar program NodeJS? Artikel berikut akan memperkenalkan kepada anda kaedah mendapatkan kod keluar program Node.js dan penghitungan kod keluar saya harap ia akan membantu anda!
Untuk keluar dari program NodeJS yang sedang berjalan, kita boleh menggunakan Ctrl C
atau process.exit()
untuk keluar. [Pembelajaran yang disyorkan: "tutorial nodejs"]
Kedua-dua operasi akan memaksa proses untuk keluar secepat mungkin, walaupun masih terdapat operasi tak segerak yang tidak lengkap belum selesai, termasuk process.stdout
dan process.stderr
Operasi I/O.
Jika proses Node.js perlu ditamatkan kerana keadaan ralat, adalah lebih selamat untuk membuang ralat yang tidak ditangkap dan membenarkan proses itu ditamatkan dengan sewajarnya daripada memanggil process.exit()
, seperti:
import process from 'process'; // 如何正确设置退出码,同时让进程正常退出。 if (someConditionNotMet()) { printUsageToStdout(); process.exitCode = 1; }
dalam Worker
Dalam utas, fungsi ini menghentikan utas semasa dan bukannya proses semasa.
Jadi untuk beberapa program NodeJS yang keluar secara tidak dijangka, bagaimana untuk mendapatkan exitCode? Apakah maksud setiap kod keluar? Mari belajar mengenainya hari ini.
Kaedah child_process.fork() ialah kes khas child_process.spawn(), khusus digunakan untuk melahirkan proses NodeJS baharu.
const fork = require("child_process").fork; console.log("main ", process.argv); const fs = require("fs"); const fd = fs.openSync("./a.log", "a"); const child = fork("./index.js", { stdio: ["ipc", "pipe", fd] }); child.on("error", (error) => { let info = `child process error ${error}`; fs.writeSync(fd, info); console.log(info); }); child.on("exit", (code) => { let info = `child process exited with code ${code}`; fs.writeSync(fd, info); console.log(info); });
Parameter pelaksanaan subrutin
const fork = require('child_process').fork; console.log('main ',process.argv); const fs=require('fs'); const fd = fs.openSync('./a.log','a'); // 子程序参数 let args = []; args[0] = 'test'; const child = fork('./index.js',args,{ stdio:['ipc','pipe',fd] }); child.on('error', (error) => { let info = `child process error ${error}`; fs.writeSync(fd,info); console.log(info); }); child.on('exit', (code) => { let info = `child process exited with code ${code}`; fs.writeSync(fd,info); console.log(info); });
NodeJS biasanya keluar dengan kod status 0
apabila tiada lagi operasi tak segerak menunggu berhenti. Gunakan kod status berikut dalam kes lain:
1
Pengecualian Maut Tidak Ditangkap: Pengecualian yang tidak ditangkap berlaku dan ia tidak dilindungi oleh domain atau 'uncaughtException'
perjanjian pengendali acara dengan. 2
: Tidak digunakan (dikhaskan oleh Bash untuk penyalahgunaan terbina dalam) 3
Ralat penghuraian JavaScript dalaman : Sumber JavaScript dalaman semasa bootstrapping NodeJS Kod menyebabkan ralat penghuraian. Ini sangat jarang berlaku dan biasanya hanya berlaku semasa pembangunan NodeJS itu sendiri. 4
Penilaian JavaScript dalaman gagal: Kod sumber JavaScript dalaman semasa bootstrapping NodeJS gagal mengembalikan nilai fungsi apabila dinilai. Ini sangat jarang berlaku dan biasanya hanya berlaku semasa pembangunan NodeJS itu sendiri. 5
Ralat Maut: Ralat maut yang tidak boleh dipulihkan wujud dalam V8. Biasanya mesej yang diawali dengan FATAL ERROR
akan dicetak kepada ralat standard. 6
Pengendali pengecualian dalaman untuk bukan fungsi: Terdapat pengecualian yang tidak ditangkap, tetapi pengendali pengecualian maut dalaman entah bagaimana ditetapkan kepada bukan fungsi dan tidak boleh dipanggil. 7
Kegagalan masa jalan pengendali pengecualian dalaman: Terdapat pengecualian yang tidak ditangkap dan fungsi pengendali pengecualian maut dalaman itu sendiri telah menyebabkan ralat semasa cuba mengendalikannya. Ini boleh berlaku, sebagai contoh, jika pemegang 'uncaughtException'
atau domain.on('error')
melemparkan ralat. 8
: Tidak digunakan. Dalam versi NodeJS sebelumnya, kod keluar 8 kadangkala menunjukkan pengecualian yang tidak ditangkap. 9
Argumen tidak sah: Pilihan yang tidak diketahui telah ditentukan atau pilihan yang memerlukan nilai telah disediakan tanpa nilai. 10
Kegagalan masa jalan JavaScript dalaman: Kod sumber JavaScript dalaman dalam proses bootstrap NodeJS melemparkan ralat semasa memanggil fungsi bootstrap. Ini sangat jarang berlaku dan biasanya hanya berlaku semasa pembangunan NodeJS itu sendiri. 12
Parameter nyahpepijat tidak sah: Pilihan --inspect
dan/atau --inspect-brk
ditetapkan, tetapi nombor port yang dipilih tidak sah atau tidak tersedia. 13
Peringkat teratas yang belum selesai menanti: await
digunakan di luar fungsi dalam kod peringkat atas, tetapi Promise
yang diluluskan tidak pernah diselesaikan. >128
Isyarat keluar: Jika NodeJS menerima isyarat maut, seperti SIGKILL
atau SIGHUP
, kod keluarnya ialah ditambah dengan nilai kod isyarat . Ini adalah amalan POSIX standard, kerana kod keluar ditakrifkan sebagai integer 7-bit, dan isyarat keluar menetapkan bit tinggi dan kemudian mengandungi nilai kod isyarat. Contohnya, nilai isyarat SIGABRT
ialah 6
, jadi kod keluar yang dijangkakan ialah 6
atau 134
.
Di atas ialah kaedah untuk mendapatkan kod keluar program NodeJS dan penghitungan kod keluar.
~Artikel ini telah tamat, terima kasih kerana membaca!
Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !
Atas ialah kandungan terperinci Perbincangan ringkas tentang cara mendapatkan kod keluar program dalam NodeJS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!