පිටවීම සඳහා භාවිතා කරන විධානය කුමක්ද? (එනම් Node.js ක්රියාවලිය අවසන් කරන්න)
පිටවීම සඳහා භාවිතා කරන විධානය කුමක්ද? (එනම් Node.js ක්රියාවලිය අවසන් කරන්න)
Answers:
ගෝලීය process
වස්තුවේ exit
ක්රමය අමතන්න :
process.exit()
process.exit ([කේතය])
නිශ්චිතව දක්වා ඇති ක්රියාවලිය අවසන් කරයි
code
. ඉවත් කර ඇත්නම්, පිටවීම 'සාර්ථක' කේතය භාවිතා කරයි0
.'අසාර්ථක' කේතයක් සමඟ පිටවීමට:
process.exit(1);
නෝඩ් ක්රියාත්මක කළ කවචය පිටවීමේ කේතය ලෙස දැකිය යුතුය
1
.
exit
කිසිසේත් නොමඟ යවන සුළු නොවේ. නෝඩ් ක්රියා කරන ආකාරය ගැන ඔබ ව්යාකූල වී ඇත. Node සේවාදායකය ලෙස සිතන්න. PHP අපාචේ වැනි වෙබ් සේවාදායකයක් තුළ ඇති බැවින් එය අවශ්ය පරිදි වෙඩි තබා නැත. වෙබ් සේවාදායකයන් සමඟ කිසිසේත් සම්බන්ධ වීමට නෝඩ්ට අවශ්ය නැත! එය සමහර ජාවාස්ක්රිප්ට් සඳහා සත්කාරක සමාගමක් වන අතර ප්රයෝජනවත් දේවල් කිරීම සඳහා නිෆ්ටි බිල්ට් පුස්තකාල කිහිපයක් ඇත.
mod_php
Apache සමඟ එය ක්රියාත්මක කිරීමට හෝ භාවිතා කිරීමට අවශ්ය නැත . ඔබට සැබවින්ම අවශ්ය නම් හෝ ඔබට නෝඩ් වලදී මෙන් ෆාස්ට් සීජීඅයි වැනි වඩා බුද්ධිමත් / ප්රමිතිගත ප්රවේශයක් භාවිතා කළහොත් ඔබට නෝඩ් වැනි පීඑච්පී හි httpd නැවත ක්රියාත්මක කළ හැකිය.
process.exit()
ඇත නිර්දේශ නොකෙරේ විස්තර කර ඇති පරිදි, පහත මෙම පිළිතුර .
භාවිතා කිරීම නිර්දේශිත නොවන බව සටහනක් පමණි .process.exit([number])
ඇමතුම්
process.exit()
තවමත් I / O මෙහෙයුම් ඇතුළුව එම තවමත් සම්පූර්ණයෙන්ම සම්පූර්ණ කර නැති තෙක් අසමමිතික මෙහෙයුම්, එහි දී පවා, හැකි තරම් ඉක්මනින් පිටවීම සඳහා මෙම ක්රියාවලිය බල කරනු ඇතprocess.stdout
හාprocess.stderr
.බොහෝ අවස්ථාවන්හීදී,
process.exit()
පැහැදිලිවම පැහැදිලිව ඇමතීම අවශ්ය නොවේ . සිදුවීම් ලූපයේ අමතර වැඩක් ඉතිරිව නොමැති නම් Node.js ක්රියාවලිය තනිවම පිටව යනු ඇත. මෙමprocess.exitCode
දේපල පිටවීම් කේතය යකා විට එම ක්රියාවලිය පිටවීම් දොරටු භාවිතා කිරීමට ඇති ක්රියාවලිය කියන්න සකස් කළ හැකි ය.නිදසුනක් ලෙස, පහත දැක්වෙන උදාහරණයෙන් දැක්වෙන්නේ දත්ත මුද්රණය කර නැතිවී යාමට තුඩු දිය හැකි ක්රමවේදය අනිසි ලෙස භාවිතා කිරීමයි :
process.exit()
stdout
// This is an example of what *not* to do: if (someConditionNotMet()) { printUsageToStdout(); process.exit(1); }
මෙය ගැටළු සහගත වීමට හේතුව වන්නේ
process.stdout
Node.js හි ලිවීම සමහර විට අසමමුහුර්ත වන අතර Node.js සිදුවීම් පුඩුවේ බහුවිධ කිනිතුල්ලන් හරහා සිදුවිය හැකි බැවිනි. ඇමතුම්process.exit()
, කෙසේ වෙතත්, මෙම ක්රියාවලිය පිටවීමේ කිරීමට එම අතිරේක මෙසේ ලියයි පෙර බලකරනුstdout
සිදු කළ හැකිය.
process.exit()
කෙලින්ම ඇමතීම වෙනුවට , කේතය මඟින් සැකසිය යුතුprocess.exitCode
අතර සිදුවීම් ලූපය සඳහා අමතර වැඩක් උපලේඛනගත කිරීමෙන් වැළකීමෙන් ක්රියාවලිය ස්වභාවිකව පිටවීමට ඉඩ දිය යුතුය :// How to properly set the exit code while letting // the process exit gracefully. if (someConditionNotMet()) { printUsageToStdout(); process.exitCode = 1; }
process.exit()
අදහස් කරන්නේ එයයි.
නිල nodejs.org ප්රලේඛනයෙන්:
process.exit(code)
නිශ්චිත කේතය සමඟ ක්රියාවලිය අවසන් කරයි. ඉවත් කර ඇත්නම්, පිටවීම 'සාර්ථක' කේතය 0 භාවිතා කරයි.
'අසාර්ථක' කේතයක් සමඟ පිටවීමට:
process.exit(1);
code = 0; process.exit(code);
code
?
process.exit()
කේතයේ පෙරනිමි 0 ලෙස පරාමිතියක් නොමැති වීමයි
process.exit(0);
ධාවනය node exit_0.js && echo 'success'
කළහොත් එය "සාර්ථකත්වය" යැයි කියනු ඇත. ඔබ exit_1.js නිර්මාණය කර process.exit(1);
ධාවනය node exit_1.js && echo 'success'
කරන්නේ නම් එය ඔබගේ ක්රියාවලිය ශුන්ය නොවන ලෙස පිටවන බැවින් එය "සාර්ථකත්වය" නොකියයි (එයින් පෙන්නුම් කරන්නේ කවචයට "අසමත් වීම" හෝ "අසාමාන්ය පිටවීමක්"). ඊට අමතරව, ඔබ එදිරිව $?
ධාවනය කරන්නේ නම් ඔබට විවිධ අගයන් පෙනෙනු ඇත (ඔබට කිරීමෙන් හා කිරීමෙන් පරීක්ෂා කළ හැකිය ). node exit_1.js
node exit_0.js
node exit_1.js
echo $?
ඔබ යුනික්ස් ටර්මිනල් හෝ වින්ඩෝස් විධාන රේඛාවක සිටින අතර නෝඩ් REPL වෙතින් පිටවීමට අවශ්ය නම් ...
.exit
කර Enter යතුර ඔබන්න, හෝnode
repl, Ctrl + D පිටවීමේ සඳහා සාමාන්ය හැසිරීම වන අතර, එය ද Windows මත ක්රියා කරයි.
විධාන රේඛාවේ සිට .exit
ඔබට අවශ්ය දේ මෙයයි:
$ node
> .exit
$
එය REPL ලියකියවිලි වල ලේඛනගත කර ඇත . REPL (Read-Eval-Print-Loop) යනු නෝඩ් විධාන රේඛාව ලෙස හැඳින්වේ.
සාමාන්ය වැඩසටහනකින් භාවිතා කරන්න process.exit([code])
.
එය ඔබ සතු පිට වීමේ node.js ක්රියාවලිය කිරීමට කැමති හේතුව මත රඳා පවතී, නමුත් කිසිදු අවස්ථාවක process.exit()
තමයි සලකා අවසන් විකල්පය . ප්රලේඛනයෙන් උපුටා ගැනීමක්:
එය ඉල්ලා බව සටහන් කිරීම වැදගත් වේ
process.exit()
තවමත් I / O මෙහෙයුම් ඇතුළුව එම තවමත් සම්පූර්ණයෙන්ම සම්පූර්ණ කර නැති තෙක් අසමමිතික මෙහෙයුම්, එහි දී පවා, හැකි තරම් ඉක්මනින් පිටවීම සඳහා මෙම ක්රියාවලිය බල කරනු ඇතprocess.stdout
හාprocess.stderr
.බොහෝ අවස්ථාවන්හීදී,
process.exit()
පැහැදිලිවම පැහැදිලිව ඇමතීම අවශ්ය නොවේ . සිදුවීම් ලූපයේ අමතර වැඩක් නොමැති නම් Node.js ක්රියාවලිය තනිවම පිටව යනු ඇත. මෙමprocess.exitCode
දේපල පිටවීම් කේතය යකා විට එම ක්රියාවලිය පිටවීම් දොරටු භාවිතා කිරීමට ඇති ක්රියාවලිය කියන්න සකස් කළ හැකි ය.
ඔබ node.js ක්රියාවලියෙන් ඉවත් වීමට කැමති විය හැකි හේතු සහ ඔබ වැළකී සිටිය යුත්තේ ඇයිද යන්න අපි ආවරණය කරමු process.exit()
.
ස්ක්රිප්ට් එහි අවසානයට පැමිණ තිබේ නම් සහ නෝඩ් පරිවර්තකය පිටවන්නේ නැතිනම්, එයින් පෙන්නුම් කරන්නේ සමහර අසින්ක් මෙහෙයුම් තවමත් ඉතිරිව ඇති බවයි. process.exit()
මෙම අවස්ථාවෙහිදී ක්රියාවලිය අවසන් කිරීමට බල කිරීම වැරදිය . අපේක්ෂිත ආකාරයෙන් පිටවීමෙන් ඔබේ පිටපත රඳවා තබා ගන්නේ කුමක් දැයි තේරුම් ගැනීමට උත්සාහ කිරීම වඩා හොඳය . ඔබ මෙය නිරාකරණය කළ විට, process.exitCode
ඇමතුම් ක්රියාවලියට ඕනෑම ප්රති result ලයක් ලබා දීමට ඔබට භාවිතා කළ හැකිය .
නිදසුනක් ලෙස, ඔබ සී express ්රගාමී යෙදුමක් මනාව වසා දැමීමට කැමති නම් . විධාන රේඛා ස්ක්රිප්ට් මෙන් නොව, සී express ්රගාමී යෙදුම නව ඉල්ලීම් එනතෙක් බලා සිටී. process.exit()
මෙහි නරක විකල්පයක් වනු ඇත්තේ එය නල මාර්ගයේ ඇති සියලුම ඉල්ලීම් වලට බාධා කරන බැවිනි. ඔවුන්ගෙන් සමහරක් අවිනිශ්චිත නොවන අය විය හැකිය (UPDATE, DELETE). සේවාදායකයාගේ පැත්තේ එම ඉල්ලීම් සම්පුර්ණ වී ඇත්දැයි සේවාදායකයා කිසි විටෙකත් නොදන්නා අතර එය සේවාදායකයා සහ සේවාදායකයා අතර දත්ත නොගැලපීමට හේතුව විය හැකිය. එකම හොඳ විසඳුම වන්නේ නව ඉල්ලීම් පිළිගැනීම නවත්වන ලෙස http සේවාදායකයට පැවසීම සහ අපේක්ෂිත ඒවා අවසන් වන තෙක් බලා සිටීම server.close()
:
var express = require('express');
var app = express();
var server = app.listen(80);
process.on( 'SIGTERM', function () {
server.close(function () {
console.log("Finished all requests");
});
});
එය තවමත් පිටව නොයන්නේ නම් - 1 වන අවස්ථාව බලන්න.
එය සෑම විටම throw
දෝෂයකට වඩා හොඳය , ඔබට මනාව හැඩගස්වා ඇති සිරස් හෝඩුවාවක් සහ දෝෂ පණිවිඩයක් ලැබෙනු ඇත. ඉහළ මට්ටමේ කේත සෑම විටම ඔවුන්ට දෝෂ ( catch
) හැසිරවිය හැකිද යන්න තීරණය කළ හැකිය . අනෙක් පැත්තෙන් process.exit(1)
නිහ ly ව ක්රියාවලිය අවසන් වන අතර මෙයින් සුවය ලැබීමට අවස්ථාවක් නොලැබෙනු ඇත. එය එකම “ප්රතිලාභය” විය process.exit()
හැකිය, ක්රියාවලිය අවසන් වන බවට ඔබට සහතික විය හැකිය.
Process.exit()
බොහෝ යෙදුම් සඳහා ප්රධාන අතිරික්තයක් සේ පෙනේ. මම සොයමින් සිටියේ php's die () ශ්රිතයට සමානයි ... වඩාත් කැමති:throw new Error('die msg')
process.exit()
, process.exitCode
සං signal ා හැසිරවීම සහ (මට අවශ්ය දේ) throw new Error
පිටවීම.
REPL (විධාන රේඛාව)
දෙවරක් ඔබන්නctrl + c
ටයිප් .exit
කර enter ඔබන්න
ස්ක්රිප්ට් ගොනුව
process.exit(code)
තවත් අසින්ක් මෙහෙයුම් නොමැති විට නෝඩ් සාමාන්යයෙන් 0 කේතය සමඟ පිටවෙයි .
process.exit(1)
අසාර්ථක කේතයක් සමඟ පිටවීම සඳහා භාවිතා කළ යුතුය. මෙය අපට නෝඩය මනාව වැසී නැති බවත් එය වසා දැමීමට බල කෙරුණු බවත් අනුමාන කිරීමට ඉඩ දෙයි.
වැනි වෙනත් පිටවීමේ කේත තිබේ
3 - අභ්යන්තර ජාවාස්ක්රිප්ට් විග්රහ කිරීමේ දෝෂය (ඉතා දුර්ලභයි)
5 - v8 javascript එන්ජිමේ මාරක දෝෂයකි
9 - වලංගු නොවන තර්කය
සම්පූර්ණ ලැයිස්තුව සඳහා නෝඩ් පිටවීමේ කේත බලන්න
මට අවශ්ය අයදුම්පතක් මා සතුව ඇත:
මට සිදුවීම් හසුරුවන්නෙකු සමඟ සම්බන්ධ process.exit(code)
වීමට සිදු exit
විය, නැතහොත් process.exit(code)
ඇමතුම අසමමුහුර්ත සිදුවීම් කෙලින්ම ills ාතනය කරන බැවින් තැපෑල යවනු නොලැබේ .
#!/usr/bin/nodejs
var mailer = require('nodemailer');
var transport = mailer.createTransport();
mail = {
to: 'Dave Bowman',
from: 'HAL 9000',
subject: 'Sorry Dave',
html: 'Im sorry, Dave. Im afraid I cant do <B>THAT</B>.'
}
transport.sendMail(mail);
//process.exit(1);
process.on('exit', function() { process.exit(1); });
process.exitCode
ගොඩනඟන විධාන රේඛා මෙවලමක් තුළ මා වෙනුවෙන් වැඩ කිරීමට උත්සාහ කරමින් දවසේ හොඳ කොටසක් ගත කළෙමි (Node v4.3.0 හි පරීක්ෂා කර ඇත). නමුත් ලේඛනගත ලෙස හැසිරීමට මට එය ලබා ගත නොහැකි විය. Github.com/tj/commander.js/… මා පුදුමයට පත් commander
කළත් මෙය ඉතා හොඳ අවස්ථාවක් විය හැකිය . වෙනත් කිසිවෙකු මෙම ගැටළුව w / Node 4 දුටුවේ දැයි විශ්වාස නැත, නමුත් අනාගත යොමු කිරීම සඳහා ලේඛනගත කිරීම.
process.exitCode = 1
@ ඩොමිනික් පෙන්වා දුන් පරිදි, ක්රියාවලි ඇමතීම වෙනුවට හඳුනා නොගත් දෝෂයක් විසි කිරීම වඩා හොඳ පුරුද්දකි. Exit ([කේතය]) :
process.exitCode = 1;
throw new Error("my module xx condition failed");
පිටවීමට
let exitCode = 1;
process.exit(exitCode)
ප්රයෝජනවත් පිටවීමේ කේත
1 - සාමාන්ය දෝෂ සඳහා කැචල් 2 - ෂෙල් බිල්ඩින් වැරදි ලෙස භාවිතා කිරීම (බෑෂ් ප්රලේඛනයට අනුව) 126 - ආයාචිත විධානය ක්රියාත්මක කළ නොහැක 127 - “විධානය හමු නොවීය” 128 - පිටවීම සඳහා වලංගු නොවන තර්කය 128 + n - මාරාන්තික දෝෂ සං signal ාව “n” 130 - පාලක-සී විසින් පිටපත අවසන් කරන ලදි 255 \ * - පරාසය ඉක්මවා යන තත්වයෙන් ඉවත් වන්න
Ctrl + C
දෙවරක් ඔබන්න හෝ .exit
.
>
(To exit, press ^C again or type .exit)
>
කේතයෙන් ඔබට විකල්ප පූර්ණ සංඛ්යාවක් ඇති process.exit([errorcode])
තැන භාවිතා කළ හැකිය [errorcode]
( 0
සාර්ථකත්වය දැක්වීමට පෙරනිමිය වේ).
ඔබ Read Eval Print Loop (REPL) භාවිතා කරන්නේ නම්, ඔබට Ctrl+ Dහෝ ටයිප් කළ හැකිය.exit
විකල්පයක් ලෙස, වින්ඩෝස් හෝ ලිනක්ස් වල ඔබට Ctrl+ C, Ctrl+ භාවිතා කළ හැකියC
මැක්හි විධානය Ctrl+ Z, Ctrl+ වේZ
node --version
v0.10.18
වින්ඩෝස් 10 හි ඇති Git Bash කවචයෙන් යතුරු ලියනය කිරීමෙන් මගේ සියලුම නෝඩ් ක්රියාවලි කෙලින්ම මිය යාමට මට හැකි විය taskkill -F -IM node.exe
- මෙය මගේ පරිගණකයේ ඇති සියලුම නෝඩ් ක්රියාවලි එකවරම අවසන් කරයි. මටත් භාවිතා කළ හැකි බව මට පෙනී taskkill //F //IM node.exe
ගියේය. දෙකම -
සහ //
මෙම සන්දර්භය තුළ වැඩ කරන්නේ මන්දැයි නිශ්චිතවම කිව නොහැක. මෙය උපකාරී වේ යැයි සිතමු!
ක්රියාවලිය ගෝලීය වස්තුවක් බැවින් ඔබට කිසිදු මොඩියුලයක් ආනයනය කිරීමට අවශ්ය නොවේ. පහත දැක්වෙන ශ්රිතය වත්මන් නෝඩ් ක්රියාවලියෙන් ඉවත් වේ.
process.exit (කේතය)
process.kill (process.pid)
process.abort ()
නෝඩ් යෙදුම ක්රියාත්මක වන විධාන රේඛා පර්යන්තය විවෘත කර Ctrl + C ඔබන්න
ඔබට කේතයෙන් node js යෙදුමෙන් පිටවීමට අවශ්ය නම්,
process.exit(); // graceful termination
process.exit(1); // non graceful termination
ක්රියාවලිය නැවැත්වීමට ඔබට ක්රියාත්මක කිරීමේ ලූපය බල කිරීමට අවශ්ය නම්, ඔබට EventEmitter හි උදාහරණයක් වන ගෝලීය විචල්ය ක්රියාවලිය භාවිතා කළ හැකිය . එබැවින් ඔබ process.exit () අමතන විට ඇත්ත වශයෙන්ම ඔබ අසමමුහුර්ත මෙහෙයුම් සිදු කර නොතිබුණද සියලු කාර්යයන් වහාම අවසන් කරන පිටවීමේ සිදුවීම විමෝචනය කරයි .
process.exit () පරාමිතියක් ලෙස පිටවීමේ කේතයක් (පූර්ණ සංඛ්යාවක්) ගනී. 0 කේතය පෙරනිමිය වන අතර එයින් අදහස් කරන්නේ එය 'සාර්ථකත්වය' සමඟ පිටවන බවයි. කේතය 1 යන්නෙන් අදහස් වන්නේ එය 'අසාර්ථකත්වය' සමඟ පිටවීමයි.
ඔබ වින්ඩෝස් හි සිටී නම්, කාර්ය කළමනාකරු වෙත යන්න, ඉන්පසු ක්රියාවලි වෙත ගොස්, "නෝඩ්" නම් ක්රියාවලියක් සොයන්න, ඉන්පසු ඔබේ මූසිකයේ දකුණු බොත්තම සමඟ එය මත ක්ලික් කර "ක්රියාවලිය අවසන් කරන්න" විකල්පය ක්ලික් කරන්න.
ඔබට node js යෙදුමෙන් පිටවීමට අවශ්ය නම් ලියන්න
process.exit(1)
ඔබේ කේතයේ
ඔබට process.exit ([code]) ශ්රිතය භාවිතා කළ හැකිය .
ඔබට 'අසමත් වීමක්' නොමැතිව පිටවීමට අවශ්ය නම්, ඔබ කේතය භාවිතා කරයි 0
:
process.exit(0);
'අසාර්ථක' කේතයක් සමඟ පිටවීමට 1
ඔබට ක්රියාත්මක විය හැකිය:
process.exit(1);
අසාර්ථකත්වයේ 'අසාර්ථක' කේතය යෙදුමට විශේෂිත වේ. එබැවින් ඔබට ඒ සඳහා ඔබේම සම්මුතීන් භාවිතා කළ හැකිය.
end()
ඉල්ලීම කළ යුතුය . නැතිනම් එය එල්ලී යනු ඇත.