এক্সপ্রেস প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সে ব্যতিক্রম পরিচালনার জন্য গাইড। উল্লম্ব অনুসন্ধান. আ.

এক্সপ্রেস এ ব্যতিক্রম হ্যান্ডলিং গাইড

ভূমিকা

ব্যবহারকারীরা যেকোন অ্যাপ্লিকেশনের সাথে ইন্টারঅ্যাক্ট করার সময় ব্যতিক্রম এবং ত্রুটি ঘটতে বাধ্য, এটি সফ্টওয়্যার ইঞ্জিনিয়ারদের উপর নির্ভর করে যে কোনও ত্রুটি দেখা দিতে পারে - জ্ঞাতসারে বা অজান্তে। ফলস্বরূপ, ব্যাকএন্ড ডেভেলপাররা যারা এক্সপ্রেসের সাথে API তৈরি করে তারা একটি দরকারী, দক্ষ এবং ব্যবহারযোগ্য API তৈরি করছে কিনা তা নিশ্চিত করার জন্য নিজেদেরকে কাজ করতে দেখে। যেটি সবচেয়ে গুরুত্বপূর্ণ তা হল ত্রুটিগুলিকে এমনভাবে পরিচালনা করা যাতে একটি শক্তিশালী সিস্টেম তৈরি করা যায় কারণ এটি বিকাশের সময়, সম্পূর্ণ ত্রুটি, উত্পাদনশীলতার সমস্যাগুলি হ্রাস করতে এবং সফ্টওয়্যার বিকাশের সাফল্য বা মাপযোগ্যতা নির্ধারণ করতে সহায়তা করে।

আপনার কি ত্রুটি বার্তা লগ করতে হবে, ত্রুটিটি দমন করতে হবে, ত্রুটি সম্পর্কে ব্যবহারকারীদের অবহিত করতে হবে বা ত্রুটিগুলি পরিচালনা করতে কোড লিখতে হবে? আর অবাক হবেন না.

এই নির্দেশিকাটিতে, আমরা শিখব কিভাবে এক্সপ্রেস অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী ত্রুটি-হ্যান্ডলিং কোডবেস তৈরি করা যায়, যা অ্যাপ্লিকেশন ত্রুটিগুলি সনাক্ত করতে সাহায্য করবে এবং রানটাইম চলাকালীন যেকোন অ্যাপ্লিকেশনকে ভালভাবে ব্যর্থ হওয়া থেকে পুনরুদ্ধার করতে সর্বোত্তম পদক্ষেপ গ্রহণ করবে।

বিঃদ্রঃ: আমরা আমাদের ডেমোতে API পরীক্ষা করতে পোস্টম্যান ব্যবহার করব। আপনি এটি ডাউনলোড করতে পারেন পোস্টম্যান ডাউনলোড পৃষ্ঠা. বিকল্পভাবে, আপনি সহজভাবে ব্রাউজার, কমান্ড-লাইন ব্যবহার করতে পারেন curl টুল, বা অন্য কোন টুল যার সাথে আপনি পরিচিত হতে পারেন।

এরর হ্যান্ডলিং কি?

সফ্টওয়্যার বিকাশে, দুটি ভিন্ন ধরণের ব্যতিক্রম রয়েছে: কর্মক্ষম এবং কর্মসূচি.

  • রানটাইম চলাকালীন অপারেশনাল ব্যর্থতা দেখা দিতে পারে, এবং অ্যাপ্লিকেশনটি হঠাৎ বন্ধ হওয়া থেকে বিরত করার জন্য, আমাদের অবশ্যই দক্ষ ত্রুটি পরিচালনা পদ্ধতির মাধ্যমে এই ব্যতিক্রমগুলিকে সুন্দরভাবে পরিচালনা করতে হবে।
  • প্রোগ্রামাটিক ব্যতিক্রমগুলি একটি প্রোগ্রামার দ্বারা ম্যানুয়ালি নিক্ষেপ করা হয়, যখন একটি ব্যতিক্রমী অবস্থা দেখা দেয়।

আপনি অপারেশনাল ব্যতিক্রমগুলিকে "অপ্রত্যাশিত, কিন্তু প্রত্যাশিত" ব্যতিক্রম হিসাবে ভাবতে পারেন (যেমন সীমার বাইরে একটি সূচক অ্যাক্সেস করা), এবং প্রোগ্রাম্যাটিক ব্যতিক্রমগুলিকে "প্রত্যাশিত এবং প্রত্যাশিত" ব্যতিক্রম হিসাবে (যেমন একটি সংখ্যা বিন্যাস ব্যতিক্রম)।

ব্যতিক্রম হ্যান্ডলিং হল একটি প্রোগ্রামের মধ্যে ত্রুটিগুলি খুঁজে বের করতে এবং ঠিক করতে ব্যবহৃত পদ্ধতি। ত্রুটি হ্যান্ডলিং বার্তা পাঠায় যাতে ত্রুটির ধরন এবং যেখানে ত্রুটি ঘটেছে স্ট্যাক অন্তর্ভুক্ত থাকে।

বিঃদ্রঃ: কম্পিউটার বিজ্ঞানে, ব্যতিক্রমগুলি থেকে পুনরুদ্ধার করা যায় এবং সাধারণত রানটাইম চলাকালীন অপারেশনাল বা প্রোগ্রাম্যাটিক সমস্যা থেকে উদ্ভূত হয়। ত্রুটিগুলি সাধারণত বাহ্যিক কারণগুলির জন্য উত্থাপিত হয়, যেমন হার্ডওয়্যারের সীমাবদ্ধতা, সংযোগের সমস্যা, মেমরির অভাব ইত্যাদি। জাভাস্ক্রিপ্টে, পদগুলি প্রায়শই বিনিময়যোগ্যভাবে ব্যবহৃত হয় এবং কাস্টম ব্যতিক্রমগুলি থেকে উদ্ভূত হয় Error ক্লাস দ্য Error ক্লাস নিজেই ত্রুটি এবং ব্যতিক্রম উভয় প্রতিনিধিত্ব করে।

এক্সপ্রেস-এ, এক্সেপশন হ্যান্ডলিং বলতে বোঝায় যে কীভাবে এক্সপ্রেস সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস ব্যতিক্রমগুলি ধরতে এবং প্রক্রিয়া করতে নিজেকে সেট আপ করে। এক্সপ্রেস-এ ব্যতিক্রম হ্যান্ডলিং সম্পর্কে ভাল জিনিস হল যে একজন বিকাশকারী হিসাবে, আপনাকে আপনার নিজের ব্যতিক্রম হ্যান্ডলার লিখতে হবে না; এক্সপ্রেস একটি ডিফল্ট ব্যতিক্রম হ্যান্ডলারের সাথে আসে। ব্যতিক্রম হ্যান্ডলার ত্রুটি সনাক্ত করতে এবং ব্যবহারকারীর কাছে রিপোর্ট করতে সাহায্য করে। এটি বিভিন্ন প্রতিকারমূলক কৌশলও প্রদান করে এবং ব্যতিক্রমগুলি প্রশমিত করতে সেগুলি প্রয়োগ করে।

যদিও এইগুলি হুডের নীচে অনেকগুলি জিনিসপত্রের মতো মনে হতে পারে, এক্সপ্রেসের ব্যতিক্রম হ্যান্ডলিং কোনও প্রোগ্রামের সামগ্রিক প্রক্রিয়াটিকে ধীর করে না বা এর সম্পাদনকে বিরতি দেয় না।

এক্সপ্রেসে ব্যতিক্রম হ্যান্ডলিং বোঝা

এক্সপ্রেসের সাথে আসা ডিফল্ট ত্রুটি হ্যান্ডলারের সাথে, আমাদের হাতে মিডলওয়্যার ফাংশনগুলির একটি সেট রয়েছে যা স্বয়ংক্রিয়ভাবে রুট হ্যান্ডলারের ত্রুটিগুলি ধরতে সহায়তা করে। শীঘ্রই, আমরা একটি এক্সপ্রেস অ্যাপে কীভাবে সঠিক ত্রুটিগুলি ফেরত দেওয়া যায় এবং কীভাবে সংবেদনশীল তথ্য ফাঁস না করা যায় সে সম্পর্কে তত্ত্বকে বাস্তবে প্রয়োগ করার জন্য একটি প্রকল্প তৈরি করব৷

এক্সপ্রেস এ মিডলওয়্যার ফাংশন সংজ্ঞায়িত করা

ত্রুটি-হ্যান্ডলিং মিডলওয়্যার ফাংশনগুলিকে এমনভাবে সংজ্ঞায়িত করা হয়েছে যাতে তারা একটি গ্রহণ করে Error প্রথম ইনপুট প্যারামিটার হিসাবে অবজেক্ট, অন্য কোন মিডলওয়্যার ফাংশনের ডিফল্ট পরামিতি অনুসরণ করে: request, response, এবং next. দ্য next() ফাংশন রাউটারের জন্য পরবর্তী ত্রুটি হ্যান্ডলারে সমস্ত বর্তমান মিডলওয়্যারকে এড়িয়ে যায়।

এক্সপ্রেসে ত্রুটি হ্যান্ডলিং সেট আপ করা হচ্ছে৷

একটি নোড এবং এক্সপ্রেস অ্যাপ তৈরি করতে আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:

$ mkdir error-handling-express

নতুন তৈরি ফোল্ডারে, আসুন একটি নতুন নোড প্রকল্প শুরু করি:

$ cd error-handling-express && npm init -y

এটি তৈরি করে a package.json আমাদের ফোল্ডারে ফাইল।

আমাদের নোড অ্যাপে একটি এক্সপ্রেস সার্ভার তৈরি করতে, আমাদের ইনস্টল করতে হবে express প্যাকেজ, dotenv স্বয়ংক্রিয়ভাবে পরিবেশ ভেরিয়েবল লোড করার জন্য .env ফাইল করুন process.env বস্তু, এবং nodemon নোড অ্যাপটি পুনরায় চালু করার জন্য যদি ডিরেক্টরিতে একটি ফাইল পরিবর্তন উল্লেখ করা হয়।

$ npm install express dotenv nodemon

পরবর্তী, একটি তৈরি করুন app.js প্রকল্প ফোল্ডারে ফাইল যা অ্যাপের জন্য সূচী ফাইল হিসাবে কাজ করবে।

এখন যেহেতু আমরা আমাদের এক্সপ্রেস অ্যাপের জন্য প্রয়োজনীয় সমস্ত নির্ভরতা ইনস্টল করেছি, আমাদের অ্যাপটি পড়ার জন্য স্ক্রিপ্ট সেট আপ করতে হবে package.json ফাইল যে অর্জন করতে, package.json ফাইল, যাতে scripts অবজেক্টটি নীচে দেখানোর মতো:

"scripts": {
    "start": "nodemon app.js"
},

বিকল্পভাবে, আপনি ব্যবহার এড়িয়ে যেতে পারেন nodemon, আর ব্যবহার করুন node app.js পরিবর্তে.

একটি এক্সপ্রেস সার্ভার সেট আপ করা হচ্ছে

সার্ভার সেট আপ করতে, আমাদের প্রথমে বিভিন্ন প্যাকেজ আমদানি করতে হবে app.js. আমরা একটি তৈরি করব .env প্রকল্প ডিরেক্টরিতে ফাইল করুন - অ্যাপ্লিকেশনের জন্য সমস্ত পরিবেশ ভেরিয়েবল সংরক্ষণ করতে:



const express = require('express')
require('dotenv').config

PORT=4000 

আমরা অ্যাপটির জন্য পোর্ট নম্বর সংজ্ঞায়িত করেছি .env, যা লোড করা হয় এবং পড়ে dotenv, এবং পরে অ্যাক্সেস করা যেতে পারে।

এক্সপ্রেস সার্ভার আরম্ভ করা হচ্ছে

এখন, আমাদের এক্সপ্রেস সার্ভার শুরু করতে হবে এবং আমাদের অ্যাপটিকে অ্যাপ পোর্ট নম্বর শোনাতে হবে, সাথে একটি পরীক্ষার রুটের অনুরোধের সাথে - /test. এর আপডেট করা যাক app.js, আমদানি বিবৃতির নীচে:


const app = express();
const port = process.env.PORT || 4000;

app.get("/test", async (req, res) => {
    return res.status(200).json({ success: true });
});

app.listen(port, () => {
    console.log(`Server is running at port ${port}`);
});

এখান থেকে, আমরা এক্সপ্রেস-এ বিভিন্ন অপারেশনাল ত্রুটির বিভিন্ন ব্যবহারের ক্ষেত্রে কীভাবে পরিচালনা করতে হয় তা শিখব।

এক্সপ্রেস এ ত্রুটি পাওয়া যায়নি হ্যান্ডলিং

ধরুন আপনাকে ব্যবহারকারীদের একটি ডাটাবেস থেকে সমস্ত ব্যবহারকারীকে আনতে হবে, আপনি দক্ষতার সাথে একটি সম্ভাব্য ত্রুটির পরিস্থিতি পরিচালনা করতে পারেন যেখানে ডাটাবেসে কোনও ডেটা বিদ্যমান নেই, যুক্তিটিকে মোড়ানোর মাধ্যমে try/catch ব্লক - কোন ত্রুটি ধরার আশা করছি যা প্রজেক্ট করতে পারে catch ব্লক:


const getUser = () => undefined;

app.get("/get-user", async (req, res) => {
	try {
		const user = getUser();
		if (!user) {
			throw new Error('User not found');
		}
	} catch (error) {
	    
		console.log(error); 
		
		res.status(400).send(error.message) 
	}
	return res.status(200).json({
		success: true
	});
});

এর ফলে:

User not found

এখন, যখন এই অনুরোধ করা হয় (আপনি পোস্টম্যান ব্যবহার করে পরীক্ষা করতে পারেন) এবং ডাটাবেসে কোনো ব্যবহারকারী নেই, ক্লায়েন্ট একটি ত্রুটি বার্তা পায় যা বলে "ব্যবহারকারী পাওয়া যায়নি"। এছাড়াও, আপনি লক্ষ্য করবেন যে ত্রুটিটি কনসোলে লগ ইন করা হয়েছে।

ত্রুটি হ্যান্ডলার মিডলওয়্যারের সাথে ত্রুটি হ্যান্ডলিং অপ্টিমাইজ করা

আমরা একটি ত্রুটি হ্যান্ডলার মিডলওয়্যার তৈরি করে উন্নয়নকে অপ্টিমাইজ করতে পারি যা সমস্ত সংজ্ঞায়িত রুটের শেষে আসবে, যাতে কোনও একটি রুটে ত্রুটি নিক্ষেপ করা হলে, এক্সপ্রেস স্বয়ংক্রিয়ভাবে পরবর্তী মিডলওয়্যারটি দেখতে পাবে এবং তালিকার নিচে যেতে থাকবে। যতক্ষণ না এটি ত্রুটি হ্যান্ডলারে পৌঁছায়। ত্রুটি হ্যান্ডলার ত্রুটিটি প্রক্রিয়া করবে এবং ক্লায়েন্টকে একটি প্রতিক্রিয়া ফেরত পাঠাবে।

সেরা-অভ্যাস, শিল্প-স্বীকৃত মান এবং অন্তর্ভুক্ত চিট শীট সহ গিট শেখার জন্য আমাদের হ্যান্ডস-অন, ব্যবহারিক গাইড দেখুন। গুগলিং গিট কমান্ড এবং আসলে বন্ধ করুন শেখা এটা!

শুরু করতে, নামক একটি ফোল্ডার তৈরি করুন middleware প্রকল্প ডিরেক্টরিতে, এবং এই ফোল্ডারে, নামক একটি ফাইল তৈরি করুন errorHandler.js যা ত্রুটি হ্যান্ডলার সংজ্ঞায়িত করে:

const errorHandler = (error, req, res, next) => {
    
    console.log(error); 
    
    res.status(400).send(error.message); 
}
module.exports = errorHandler;

আমাদের মিডলওয়্যার ফাংশনে, আমরা এক্সপ্রেসকে সচেতন করেছি যে এটি একটি মৌলিক মিডলওয়্যার ফাংশন নয়, কিন্তু একটি ত্রুটি হ্যান্ডলার, যোগ করে error ৩টি মৌলিক পরামিতির আগে পরামিতি।

এখন, আমরা আমাদের ডেমোতে এরর হ্যান্ডলার ব্যবহার করব app.js এবং ত্রুটি হ্যান্ডলার মিডলওয়্যার সহ ব্যবহারকারীদের আনার প্রাথমিক ত্রুটি পরিচালনা করুন, যেমন নীচে দেখানো হয়েছে:


const getUser = () => undefined;

app.get("/get-user", async (req, res, next) => {
	try {
		const user = getUser();
		if (!user) {
			throw new Error("User not found");
		}
	} catch (error) {
		return next(error);
	}
});

app.use(errorHandler);

আমরা আমাদের কোডকে আরও অপ্টিমাইজ করতে পারি, এর চারপাশে একটি বিমূর্ততা তৈরি করে try/catch যুক্তি আমরা নামক প্রকল্প ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করে এটি অর্জন করতে পারি utils, এবং এটিতে, নামক একটি ফাইল তৈরি করুন tryCatch.js.

বিমূর্ত করতে try-catch যুক্তি - আমরা একটি ফাংশন সংজ্ঞায়িত করতে পারি যা অন্য একটি ফাংশন গ্রহণ করে (যা হিসাবে পরিচিত নিয়ামক) এর পরামিতি হিসাবে, এবং একটি প্রদান করে async ফাংশন যা একটি ধারণ করবে try/catch যেকোনো প্রাপ্ত নিয়ামকের জন্য।

কন্ট্রোলারে কোনো ত্রুটি দেখা দিলে তা ধরা পড়ে catch ব্লক এবং পরবর্তী ফাংশন বলা হয়:


const tryCatch = (controller) => async (req, res, next) => {
	try {
		await controller(req, res);
	} catch (error) {
		return next(error);
	}
};
module.exports = tryCatch;

সঙ্গে সঙ্গে try/catch বিমূর্ততা, আমরা আমাদের কোডটিকে বাদ দিয়ে এটিকে আরও সংক্ষিপ্ত করতে রিফ্যাক্টর করতে পারি try-catch তে ব্যবহারকারীদের আনার সময় স্পষ্টভাবে দফা app.js:


const getUser = () => undefined;

app.get(
	"/get-user",
	tryCatch(async (req, res) => {
		const user = getUser();
		if (!user) {
			throw new Error("User not found");
		}
		res.status(400).send(error.message);
	})
);

আমরা সফলভাবে ট্রাই-ক্যাচ লজিককে বিমূর্ত করে ফেলেছি এবং আমাদের কোড এখনও আগের মতোই কাজ করে।

এক্সপ্রেসে বৈধতা ত্রুটি পরিচালনা করা

এই ডেমোর জন্য, আমরা লগইন করার জন্য আমাদের এক্সপ্রেস অ্যাপে একটি নতুন রুট তৈরি করব - লগ ইন করার পরে একটি ব্যবহারকারী আইডি যাচাই করতে। প্রথমে, আমরা ইনস্টল করব joi প্যাকেজ, একটি স্কিমা তৈরিতে সাহায্য করার জন্য, যার সাহায্যে আমরা প্রয়োজনীয়তাগুলি প্রয়োগ করতে পারি:

$ npm i joi

এর পরে, একটি স্কিমা তৈরি করুন যা একটি Joi.object সঙ্গে একটি userId যেটি অবশ্যই একটি সংখ্যা হতে হবে এবং প্রয়োজন - যার অর্থ অনুরোধটি অবশ্যই একটি ব্যবহারকারী আইডি সহ একটি বস্তুর সাথে মিলবে।

আমরা ব্যবহার করতে পারেন validate() স্কিমার বিরুদ্ধে প্রতিটি ইনপুট যাচাই করার জন্য স্কিমা অবজেক্টে পদ্ধতি:


const schema = Joi.object({
	userId: Joi.number().required(),
});

app.post(
	"/login",
	tryCatch(async (req, res) => {
		const {error, value} = schema.validate({});
		if (error) throw error;
	})
);

যদি একটি খালি বস্তুর মধ্যে পাস করা হয় validate() পদ্ধতিতে, ত্রুটিটি সুন্দরভাবে পরিচালনা করা হবে এবং ত্রুটি বার্তাটি ক্লায়েন্টকে পাঠানো হবে:

কনসোলে, আমরা একটি অ্যাক্সেসও পাই details অ্যারে যা ত্রুটি সম্পর্কে বিভিন্ন বিবরণ অন্তর্ভুক্ত করে যা প্রয়োজনে ব্যবহারকারীর সাথে যোগাযোগ করা যেতে পারে।

বিশেষভাবে বৈধকরণ ত্রুটিগুলিকে এমনভাবে পরিচালনা করার জন্য যাতে প্রতি বৈধতা ত্রুটির যথাযথ ত্রুটির বিশদটি পাস করা যায়, ত্রুটি হ্যান্ডলার মিডলওয়্যারটিকে রিফ্যাক্টর করা যেতে পারে:


const errorHandler = (error, req, res, next) => {
	console.log(error); 

	if (error.name === "ValidationError") {
		return res.status(400).send({
			type: "ValidationError",
			details: error.details,
		});
	}

	res.status(400).send(error.message); 
};

module.exports = errorHandler;

সঙ্গে errorHandler.js এখন কাস্টমাইজড, যখন আমরা একটি খালি বস্তুর সাথে একই অনুরোধ করি validate() পদ্ধতি:

এক্সপ্রেস প্লেটোব্লকচেন ডেটা ইন্টেলিজেন্সে ব্যতিক্রম পরিচালনার জন্য গাইড। উল্লম্ব অনুসন্ধান. আ.

আমরা এখন একটি কাস্টমাইজড অবজেক্টে অ্যাক্সেস পেয়েছি যা আরও পাঠযোগ্য/বন্ধুত্বপূর্ণ পদ্ধতিতে বার্তাগুলিকে ফেরত দেয়। এইভাবে, আমরা যে ধরণের ত্রুটি আসছে তার উপর ভিত্তি করে বিভিন্ন ধরণের ত্রুটি পাঠাতে এবং পরিচালনা করতে সক্ষম।

উপসংহার

এই নির্দেশিকাটিতে, আমরা Express.js এর ত্রুটি পরিচালনার প্রতিটি দিক দেখেছি, যার মধ্যে রয়েছে কীভাবে সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস কোড ডিফল্টরূপে পরিচালনা করা হয়, কীভাবে আপনার নিজের ত্রুটির ক্লাস তৈরি করবেন, কীভাবে কাস্টম ত্রুটি-হ্যান্ডলিং মিডলওয়্যার ফাংশন লিখবেন এবং সরবরাহ করবেন next চূড়ান্ত ক্যাচ হ্যান্ডলার হিসাবে

সেখানে প্রতিটি কাজের মতোই, বিকাশের সময়ও সেরা অনুশীলন রয়েছে যার মধ্যে কার্যকর ত্রুটি পরিচালনা অন্তর্ভুক্ত রয়েছে এবং আজ আমরা শিখেছি যে কীভাবে আমরা একটি এক্সপ্রেস অ্যাপে একটি শক্তিশালী পদ্ধতিতে ত্রুটিগুলি পরিচালনা করতে পারি।

ত্রুটিগুলি সঠিকভাবে পরিচালনা করার অর্থ কেবল বাগ এবং ত্রুটিগুলি সহজেই খুঁজে বের করার মাধ্যমে বিকাশের সময় হ্রাস করা নয় বরং বড় আকারের অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী কোডবেস তৈরি করা। এই নির্দেশিকায়, আমরা দেখেছি কিভাবে অপারেশনাল ত্রুটিগুলি পরিচালনা করার জন্য মিডলওয়্যার সেট আপ করতে হয়। ত্রুটি হ্যান্ডলিং উন্নত করার কিছু অন্যান্য উপায়ের মধ্যে রয়েছে: স্ট্যাক ট্রেস না পাঠানো, অপ্রকাশিত ব্যতিক্রমগুলি পরিচালনা করার জন্য প্রসেসগুলি সুন্দরভাবে বন্ধ করা, যথাযথ ত্রুটি বার্তা প্রদান করা, ত্রুটির লগ পাঠানো এবং একটি ক্লাস সেট আপ করা যা প্রসারিত করে Error বর্গ.

আমি আশা করি যে উদাহরণগুলি আমি এই টিউটোরিয়ালে ব্যবহার করেছি তা আপনার জন্য উপভোগ্য ছিল। ত্রুটি ব্যবস্থাপনা সম্পর্কে বাস্তব জগতে ব্যবহারের জন্য একটি এক্সপ্রেস অ্যাপ্লিকেশন লেখার সময় আপনি সম্ভাব্য বিভিন্ন পরিস্থিতিতে সম্মুখীন হতে পারেন আমি কভার করেছি। অনুগ্রহ করে, আমি মিস কিছু আছে যদি আমাকে জানান. এটা আমাদের উপকার করবে এবং আমাকে আরও শিখতে সাহায্য করবে। একটি ভাল দিন এবং পড়ার জন্য ধন্যবাদ.

আপনি নিবন্ধে ব্যবহৃত সমস্ত উত্স কোড উল্লেখ করতে পারেন গিটহাব.

অতিরিক্ত সম্পদ

সময় স্ট্যাম্প:

থেকে আরো Stackabuse