কিভাবে Node.js এ প্রস্থান করার জন্য




(11)

@ ডমিনিক হিসাবে উল্লেখ করা হয়েছে, exit প্রক্রিয়া process.exit ([কোড]) কল করার পরিবর্তে ভাল অনুশীলন।
process.exitCode = 1; throw new Error("my module xx condition failed");

প্রস্থান করার জন্য ব্যবহৃত কমান্ড কি? (অর্থাৎ Node.js প্রক্রিয়া বন্ধ করুন)


অফিসিয়াল nodejs.org ডকুমেন্টেশন থেকে:

process.exit(code)

নির্দিষ্ট কোড দিয়ে প্রক্রিয়া শেষ। বাদ দেওয়া হলে, 'সফলতা কোড' 0 ব্যবহার করে প্রস্থান করুন।

একটি 'ব্যর্থতা' কোড দিয়ে প্রস্থান করার জন্য:

process.exit(1);

আপনি নোড জেএস অ্যাপ্লিকেশন থেকে প্রস্থান করতে চান তাহলে লিখুন

process.exit(1)

আপনার কোড


আপনি যদি ইউনিক্স টার্মিনাল বা উইন্ডোজ কমান্ড লাইনের মধ্যে থাকেন এবং নোড REPL থেকে বেরিয়ে যেতে চান তবে ...

  • Ctrl + C দুইবার চাপুন , অথবা
  • টাইপ করুন। .exit এবং Enter চাপুন, অথবা
  • একটি লাইনের শুরুতে Ctrl + D চাপুন (শুধুমাত্র ইউনিক্স)

আমি একটি আবেদন যা আমি চেয়েছিলেন:

  1. ব্যবহারকারী একটি ইমেইল পাঠান
  2. একটি ত্রুটি কোড দিয়ে প্রস্থান করুন

আমাকে process.exit(code) হ্যান্ডলারের জন্য process.exit(code) হুক করতে হয়েছিল, নাকি কলিং process.exit(code) সরাসরি মেল হিসাবে অ্যাক্সিক্রোনাস ইভেন্টগুলি থেকে মেল পাঠানো হবে না।

#!/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); });

এটি node.js প্রক্রিয়াকে প্রস্থান করার জন্য আপনি রাজি কেন তা নির্ভর করে, কিন্তু কোনও ক্ষেত্রে process.exit() বিবেচনা করার শেষ বিকল্প । ডকুমেন্টেশন থেকে একটি উদ্ধৃতি:

এটি অবশ্যই গুরুত্বপূর্ণ যে কলিং process.exit() প্রক্রিয়াটি যত তাড়াতাড়ি সম্ভব প্রস্থান করতে বাধ্য করবে এমনকি যদি এখনও অ্যাসিঙ্ক্রোনাস অপারেশনগুলি এখনও সম্পূর্ণ না হয়ে থাকে তবে তা সম্পূর্ণরূপে সম্পন্ন হয়নি, যেমন I / O ক্রিয়াকলাপগুলি process.stdout এবং process.stderr

বেশিরভাগ ক্ষেত্রেই এটি process.exit() স্পষ্টভাবে কল করতে প্রয়োজনীয় নয়। ইভেন্ট লুপে কোনও অতিরিক্ত কাজ মুলতুবি থাকলে Node.js প্রক্রিয়াটি এটির বাইরে প্রস্থান হবে। process.exitCode সম্পত্তির process.exitCode বলার জন্য সেট করা যেতে পারে যা প্রক্রিয়াটি নির্মমভাবে ছাড়ার সময় কোডটি ব্যবহার করতে প্রস্থান করে।

চলুন আমরা সম্ভাব্য কারণগুলিকে কভার করতে পারি কেন আপনি node.js প্রক্রিয়ায় প্রস্থান করতে ইচ্ছুক এবং কেন আপনি process.exit() : এড়াতে হবে?

কেস 1 - এক্সিকিউশন সম্পূর্ণ (কমান্ড লাইন স্ক্রিপ্ট)

স্ক্রিপ্টটি যদি শেষ হয়ে যায় এবং নোড ইন্টারপ্রেটারটি প্রস্থান না হয় তবে এটি নির্দেশ করে যে কিছু অ্যাসাইন অপারেশন এখনও মুলতুবি রয়েছে। এই সময়ে process.exit() সাথে প্রক্রিয়া শেষ করার জন্য এটি ভুল। প্রত্যাশিত উপায়ে আপনার স্ক্রিপ্টটি ধরে রাখা থেকে বোঝার চেষ্টা করা ভাল। এবং যখন আপনি এটি স্থির করেন, তখন আপনি process.exitCode কলিং প্রক্রিয়ার কোনো ফলাফল ফেরত দিতে ব্যবহার করতে পারেন।

কেস 2 - বাহ্যিক সংকেত (সিজিন্ট / সিগারেট / অন্যান্য) কারণে সমাপ্তি

উদাহরণস্বরূপ, যদি আপনি একটি এক্সপ্রেস অ্যাপ্লিকেশন চিত্তাকর্ষকভাবে বন্ধ করতে ইচ্ছুক হন। কমান্ড লাইন স্ক্রিপ্টের মত, এক্সপ্রেস অ্যাপ্লিকেশন অসীমভাবে চলমান রাখে, নতুন অনুরোধগুলির জন্য অপেক্ষা করছে। process.exit() এখানে একটি খারাপ বিকল্প হবে কারণ এটি পাইপলাইনে থাকা সমস্ত অনুরোধগুলিকে বিঘ্নিত করতে যাচ্ছে। এবং তাদের মধ্যে কিছু অ-অমানবিক (আপডেট, মুছে ফেলা) হতে পারে। সার্ভার পার্শ্বগুলিতে অনুরোধগুলি সম্পন্ন হয় কিনা তা গ্রাহক কখনই জানতে পারবেন না এবং এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা অসঙ্গতির কারণ হতে পারে। একমাত্র ভাল সমাধান HTTP সার্ভারকে নতুন অনুরোধগুলি গ্রহণ বন্ধ করতে বলার এবং server.close() সাথে শেষ করার জন্য মুলতুবি 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 দেখুন।

কেস 3 - অভ্যন্তরীণ ত্রুটি

একটি ত্রুটি throw সবসময় ভাল, আপনি একটি চমত্কার ফর্ম্যাট স্ট্যাক ট্রেস এবং ত্রুটি বার্তা পাবেন। কোডের উচ্চ স্তরের সর্বদা সিদ্ধান্ত নিতে পারে যে তারা ত্রুটিটি catch ( catch ) অথবা এটি প্রক্রিয়াটিকে ক্র্যাশ করতে দেয়। অন্য দিকে, process.exit(1) চুপচাপ প্রক্রিয়া শেষ হবে এবং এই থেকে পুনরুদ্ধার করার কোন সুযোগ থাকবে। এটি process.exit() এর একমাত্র "সুবিধা" হতে পারে, আপনি নিশ্চিত হতে পারেন যে প্রক্রিয়াটি বন্ধ হয়ে যাবে।


কোড থেকে আপনি process.exit([errorcode]) ব্যবহার করতে পারেন যেখানে [errorcode] একটি ঐচ্ছিক পূর্ণসংখ্যা ( 0 সফলতা নির্দেশ করার জন্য ডিফল্ট)।

যদি আপনি রিড ইভাল প্রিন্ট লুপ (REPL) ব্যবহার করেন, তবে আপনি Ctrl + D ব্যবহার করতে পারেন, অথবা .exit টাইপ করতে পারেন

অন্যথায়, উইন্ডোজ বা লিনাক্সে আপনি Ctrl + C , Ctrl + C ব্যবহার করতে পারেন

Mac এ কমান্ডটি Ctrl + Z , Ctrl + Z


প্রস্থান করা

let exitCode = 1;
process.exit(exitCode)

দরকারী প্রস্থান কোড

1 - Catchall for general errors
2 - Misuse of shell builtins (according to Bash documentation)
126 - Command invoked cannot execute
127 - “command not found”
128 - Invalid argument to exit
128+n - Fatal error signal “n”
130 - Script terminated by Control-C
255\* - Exit status out of range

process.exit([number]) ব্যবহার করে শুধুমাত্র একটি নোট exit হয় exit

এটি সমস্যাযুক্ত কারণ কারণ Node.js এ process.stdout এ লিখতে হয় কখনও কখনও অ্যাসিঙ্ক্রোনাস এবং Node.js ইভেন্ট লুপের একাধিক টিকগুলিতে ঘটতে পারে। কলিং process.exit (), তবে স্টেডাউটে যে অতিরিক্ত লেখাগুলি সম্পাদন করা যেতে পারে তার আগে প্রক্রিয়াকে প্রস্থান করতে বাধ্য করে।

Process.exit () সরাসরি কল করার পরিবর্তে, কোডটি process.exitCode সেট করা উচিত এবং ইভেন্ট লুপের জন্য অতিরিক্ত কোনও সময় নির্ধারণের সময় এটিকে প্রক্রিয়াকরণ এড়াতে স্বাভাবিকভাবে প্রস্থান করার অনুমতি দেয়:

// How to properly set the exit code while letting
// the process exit gracefully.
if (someConditionNotMet()) {
  printUsageToStdout();
  process.exitCode = 1;
}

আরপিএল (কমান্ড লাইন)

  • ctrl + c দুইবার টিপুন

  • টাইপ করুন .exit এবং এন্টার চাপুন

স্ক্রিপ্ট ফাইল

process.exit(code)

কোনও অ্যাসাইন অপারেশন মুলতুবি থাকা অবস্থায় নোড সাধারণত কোড 0 দিয়ে প্রস্থান করে।

process.exit(1) একটি ব্যর্থতা কোডের সাথে প্রস্থান করার জন্য ব্যবহার করা উচিত। এটি আমাদের জানার অনুমতি দেবে যে নোডটি চিত্তাকর্ষকভাবে বন্ধ হয়নি এবং বন্ধ করতে বাধ্য হয়েছিল।

মত অন্যান্য প্রস্থান কোড আছে

3 - অভ্যন্তরীণ জাভাস্ক্রিপ্ট পার্স ত্রুটি (খুব বিরল)

5 - ভি 8 জাভাস্ক্রিপ্ট ইঞ্জিন মারাত্মক ত্রুটি

9 - অবৈধ যুক্তি

সম্পূর্ণ তালিকা জন্য নোড প্রস্থান কোড দেখুন


বিশ্বব্যাপী process বস্তুর exit পদ্ধতি কল করুন:

process.exit()

ডক্স থেকে:

process.exit ([কোড])

নির্দিষ্ট code দিয়ে প্রক্রিয়া শেষ। বাদ দেওয়া হলে, 'সফলতা কোড' 0 ব্যবহার করে প্রস্থান করুন।

একটি 'ব্যর্থতা' কোড দিয়ে প্রস্থান করার জন্য:

process.exit(1);

নোড নির্বাহ করা শেল 1 হিসাবে প্রস্থান কোড দেখতে হবে।





node.js