হেডলেস ক্রোমের সাথে মরিচায় জাভাস্ক্রিপ্ট ত্রুটিগুলি পরিচালনা করা
ডিবাগিং এবং অনলাইন অটোমেশন বা পরীক্ষার সাথে কাজ করার সময় কোড স্থায়িত্ব নিশ্চিত করার জন্য JavaScript সমস্যাগুলি সনাক্ত করা অপরিহার্য হতে পারে। জাভাস্ক্রিপ্ট রাস্টে হেডলেস ক্রোম ব্রাউজার ইনস্ট্যান্সের ভিতরে চালানো এবং পরিবর্তিত হতে পারে ধন্যবাদ ক্রেট যাইহোক, ডকুমেন্টেশনের অভাব জাভাস্ক্রিপ্ট সমস্যা সনাক্ত করতে এই ক্রেট ব্যবহার করা কঠিন করে তোলে।
এই নিবন্ধটি ব্যাখ্যা করে কিভাবে ব্যবহার করে জাভাস্ক্রিপ্ট সমস্যা সনাক্ত করতে হয় মরিচা-এ ক্রেট, যেখানে একটি স্ক্রিপ্ট ব্যর্থ হয় এমন পরিস্থিতি পরিচালনার উপর জোর দিয়ে। আমরা বিশেষভাবে দেখব কিভাবে ক্রোমে লগিং এবং ডিবাগার ইভেন্টগুলি ব্যবহার করা যায় যাতে ব্যর্থ দাবির মতো সমস্যাগুলির দিকে নজর রাখা যায়৷
বিশেষ ধরণের জাভাস্ক্রিপ্ট ব্যর্থতার জন্য মনিটর করার জন্য রাস্টে সঠিকভাবে ইভেন্ট শ্রোতাদের সেট আপ করা ডেভেলপারদের মুখোমুখি হওয়া সমস্যাগুলির মধ্যে একটি। আমরা দেখতে পাব, কিছু সেটআপ প্রয়োজন হতে পারে যেমন ফাংশন নিয়োগ করার আগে অবিলম্বে সনাক্তযোগ্য ঘটনা তৈরি করতে; এটি মরিচা এর ইভেন্ট পরিচালনার ক্ষমতা সম্পর্কে গভীর বোঝার জন্য কল করে।
আমরা কোড নমুনার মাধ্যমে যাব, সাধারণ সমস্যার সমাধান করব এবং আসন্ন অংশগুলিতে কার্যকরভাবে জাভাস্ক্রিপ্ট ত্রুটিগুলি ধরতে আমাদের ইভেন্ট শ্রোতাদের উন্নতি করব৷ এই পদ্ধতিটি দেখায় যে কীভাবে ক্রেটগুলির সাথে কাজ করার জন্য যেগুলির পুঙ্খানুপুঙ্খ ডকুমেন্টেশন নেই তার জন্য ট্রায়াল এবং ত্রুটির প্রয়োজন হয়৷
আদেশ | ব্যবহারের উদাহরণ |
---|---|
ব্যবহার করে crate, এই কমান্ডটি একটি নতুন হেডলেস ক্রোম ব্রাউজার ইনস্ট্যান্স শুরু করে। উইন্ডোর আকার এবং ব্রাউজার পাথ সহ কাস্টম স্টার্টআপ প্যারামিটারগুলি এটির সাথে কনফিগার করা যেতে পারে। | |
এই কমান্ডের সাহায্যে, লঞ্চের আগে ব্রাউজার সেটিংস কাস্টমাইজ করা যেতে পারে। এটি উইন্ডোর আকার এবং ব্যবহারকারীর পছন্দগুলি সহ ক্রোম ইনস্ট্যান্স প্যারামিটারগুলির একটি সংগ্রহের নির্মাণে নিযুক্ত। | |
Chrome অধিবেশন এখনও খোলা থাকা অবস্থায় ব্রাউজারে একটি নতুন ট্যাব খোলে৷ আপনি যদি একবারে একাধিক পৃষ্ঠায় নেভিগেট করতে চান বা একই সাথে একাধিক জাভাস্ক্রিপ্ট স্ক্রিপ্ট চালাতে চান তবে এটি প্রয়োজনীয়। | |
সক্রিয় ট্যাবের জন্য Chrome ডিবাগার চালু করে, এটি আপনাকে প্রোগ্রামেটিকভাবে কাজ করতে দেয় এবং JavaScript পজ বা সমস্যার মতো ডিবাগ ইভেন্ট শুনতে দেয়। | |
বিকাশকারীদের ব্রাউজার ট্যাবে লগিং বৈশিষ্ট্য সক্রিয় করে সেশন চলাকালীন উত্পাদিত জাভাস্ক্রিপ্ট কনসোল আউটপুট, ত্রুটি এবং অন্যান্য লগ বার্তা রেকর্ড এবং পরীক্ষা করতে সক্ষম করে৷ | |
একটি ইভেন্ট লিসেনার যোগ করার সাথে সাথে, ব্রাউজারের ডিবাগার এখন কিছু ইভেন্টে সাড়া দিতে পারে, যেমন , এবং জাভাস্ক্রিপ্ট ত্রুটি পাওয়া গেলে সতর্কতা জারি করুন। | |
সাধারণত ব্রেকপয়েন্ট বা ত্রুটির ফলে জাভাস্ক্রিপ্ট এক্সিকিউশন বন্ধ করা হয়েছে তা শনাক্ত করার পরে Chrome ডিবাগার দ্বারা নেওয়া একটি বিশেষ পদক্ষেপ। রানটাইম চলাকালীন ব্যর্থতা ক্যাপচার করার জন্য, এটি অপরিহার্য। | |
বর্তমান ট্যাবের প্রসঙ্গে একটি জাভাস্ক্রিপ্ট এক্সপ্রেশন বহন করে। এই ক্ষেত্রে, একটি ত্রুটি চলমান দ্বারা ট্রিগার করা হয় , এবং ইভেন্ট শ্রোতা এটি রেকর্ড করে। | |
ত্রুটির তথ্য রেকর্ড করতে একটি কাস্টম প্যানিক হুক কনফিগার করে এবং যখন মরিচা অ্যাপ্লিকেশন ঘটে তখন প্যানিক ক্যাপচার করে। এটি জাভাস্ক্রিপ্ট সমস্যা সনাক্ত করতে এবং কাস্টম ত্রুটি পরিচালনা যোগ করতে সহায়ক হতে পারে। | |
জাভাস্ক্রিপ্ট চালানোর জন্য সময় দেয় এবং প্রোগ্রাম শেষ হওয়ার আগে সম্ভাব্য বাগগুলি খুঁজে পাওয়ার জন্য একটি পূর্বনির্ধারিত সময়ের জন্য প্রোগ্রামের সঞ্চালনকে বিরতি দেয়। |
রাস্টের হেডলেস ক্রোম ক্রেট দিয়ে কীভাবে জাভাস্ক্রিপ্ট ত্রুটি সনাক্ত করবেন
স্ক্রিপ্টগুলির উদ্দেশ্য হল মরিচা ক্রেট ব্যবহার করে একটি হেডলেস ক্রোম ব্রাউজারের ভিতরে জাভাস্ক্রিপ্ট কোড চালানো এবং যে কোনো জাভাস্ক্রিপ্ট সমস্যা চিহ্নিত করুন। জাভাস্ক্রিপ্ট উদ্দেশ্য অনুযায়ী কাজ করে তা নিশ্চিত করতে ওয়েব স্ক্র্যাপিং বা স্বয়ংক্রিয় পরীক্ষা ব্যবহার করার সময় এটি বিশেষভাবে সহায়ক। ব্যবহার করে , স্ক্রিপ্ট প্রথমে ব্রাউজারের একটি নতুন উদাহরণ শুরু করে এবং কিছু সেট করে , যেমন জানালার আকার। হেডলেস ক্রোম ইন্সট্যান্স একটি বাস্তব ব্রাউজার পরিবেশের মতো কাজ করে তা নিশ্চিত করতে, এই সেটিংসগুলি পাস করা হয়েছে৷
স্ক্রিপ্ট ব্যবহার করে ব্রাউজার শুরু হওয়ার পর একটি নতুন ট্যাব তৈরি করতে। এই ট্যাবটি ব্রাউজার উইন্ডোর মতোই জাভাস্ক্রিপ্ট চালায়। আমরা ব্যবহার করে জাভাস্ক্রিপ্ট ত্রুটি সহ গুরুত্বপূর্ণ ঘটনা শুনতে পারি এবং Chrome ডিবাগার এবং লগিং বৈশিষ্ট্যগুলি সক্ষম করতে৷ বিশেষত, এই ক্ষমতাগুলি চালু করা স্ক্রিপ্টটিকে Chrome-এর অন্তর্নির্মিত ডিবাগিং প্রোটোকল ব্যবহার করতে সক্ষম করে, যা প্রচলিত লগিং পদ্ধতির মাধ্যমে স্পষ্ট নাও হতে পারে এমন ত্রুটিগুলি ধরার জন্য অপরিহার্য৷
পরবর্তী, একটি ইভেন্ট শ্রোতা নিয়োগ করার জন্য স্ক্রিপ্ট দ্বারা পদ্ধতি ব্যবহার করা হয়। এই ফাংশনটি নির্দিষ্ট ডিবাগিং ইভেন্ট রেকর্ড করার জন্য একটি সিস্টেম তৈরি করে, যেমন , যা একটি ইঙ্গিত যে জাভাস্ক্রিপ্ট সমস্যা বা ব্রেকপয়েন্টের কারণে মৃত্যুদন্ড বিঘ্নিত হয়েছে। ইভেন্ট শ্রোতা এটিকে একটি মরিচা বন্ধে আবদ্ধ করে একটি জাভাস্ক্রিপ্ট ত্রুটি হয়েছে কিনা তা নির্ধারণ করে। সফ্টওয়্যারটি আতঙ্কিত হবে এবং একটি ত্রুটি পাওয়া গেলে একটি ত্রুটি বার্তা প্রদর্শন করবে৷ এই পদ্ধতির সাহায্যে, এমনকি মাথাবিহীনভাবে কাজ করার সময়ও, জাভাস্ক্রিপ্ট ত্রুটিগুলি রিয়েল টাইমে ধরা পড়ে।
অবশেষে, একটি সহজবোধ্য জাভাস্ক্রিপ্ট বিবৃতি মূল্যায়ন করতে ব্যবহৃত হয়, . ওয়েব অ্যাপ্লিকেশনগুলিতে একটি সাধারণ দৃশ্যের অনুকরণ করার জন্য যেখানে একটি ব্যর্থ দাবি বা অন্য জাভাস্ক্রিপ্ট সমস্যা ক্যাপচার করা প্রয়োজন, এই কমান্ডটি উদ্দেশ্যমূলকভাবে একটি ত্রুটি ঘটায়। যখন একটি সমস্যা দেখা দেয়, বিকাশকারীরা স্বয়ংক্রিয়ভাবে এক্সিকিউশনকে বিরাম দিতে পারে এবং ত্রুটি সনাক্তকরণ এবং ডিবাগারকে একত্রিত করে একটি অ্যালার্ম ট্রিগার করতে পারে৷ সবশেষে, স্ক্রিপ্টটি জাভাস্ক্রিপ্ট চালানোর জন্য এবং ব্যবহার বন্ধ করার আগে রেকর্ড করার জন্য যথেষ্ট দীর্ঘ অপেক্ষা করে। .
হেডলেস ক্রোমের মাধ্যমে মরিচায় জাভাস্ক্রিপ্ট ত্রুটি সনাক্ত করা
এই পদ্ধতিটি জাভাস্ক্রিপ্ট চালানোর জন্য ক্রোমের ডিবাগার এবং লগ প্রোটোকল ব্যবহার করে এবং রাস্ট এবং ক্রেট
use headless_chrome::{protocol::cdp::types::Event, Browser, LaunchOptions};
use std::{error::Error, sync::Arc};
fn main() -> Result<(), Box<dyn Error>> {
let browser = Browser::new(
LaunchOptions::default_builder()
.window_size(Some((2000, 2000)))
.build()
.expect("Could not find chrome-executable"),
)?;
let tab = browser.new_tab()?;
tab.enable_debugger().unwrap();
tab.enable_log().unwrap();
let _events = tab.add_event_listener(Arc::new(move |event: &Event| {
dbg!(event);
if let Event::DebuggerPaused(_paused_event) = event {
panic!("JavaScript error detected!");
}
}))?;
let _remote_object = tab.evaluate("console.assert(false);", true).unwrap();
std::thread::sleep(std::time::Duration::from_secs(1));
Ok(())
}
বিকল্প পদ্ধতি: ত্রুটি সনাক্তকরণের জন্য মরিচা প্যানিক হুক ব্যবহার করা
এই সমাধানটি রাস্টের প্যানিক হুক ব্যবহার করে জাভাস্ক্রিপ্ট সমস্যা ধরার জন্য একটি অতিরিক্ত পদ্ধতি দেখায়, যা প্যানিক মেসেজ লগ করে এবং এক্সিকিউশন প্রবাহ পরিচালনা করে।
use headless_chrome::{Browser, LaunchOptions};
use std::panic;
fn main() -> Result<(), Box<dyn std::error::Error>> {
panic::set_hook(Box::new(|info| {
println!("Panic occurred: {:?}", info);
}));
let browser = Browser::new(LaunchOptions::default())?;
let tab = browser.new_tab()?;
tab.enable_log()?;
tab.evaluate("console.assert(false);", true)?;
std::thread::sleep(std::time::Duration::from_secs(1));
Ok(())
}
মরিচায় জাভাস্ক্রিপ্ট ত্রুটি সনাক্ত করার জন্য ইউনিট পরীক্ষার সমাধান
এই উদাহরণটি যাচাই করতে ইউনিট পরীক্ষা ব্যবহার করে যে জাভাস্ক্রিপ্টের ত্রুটিগুলি মরিচা সহ একটি হেডলেস ক্রোম পরিবেশে সনাক্ত করা যেতে পারে। ত্রুটি-হ্যান্ডলিং প্রক্রিয়ার স্থিতিস্থাপকতা পরীক্ষার মাধ্যমে নিশ্চিত করা হয়।
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_js_error_detection() {
let browser = Browser::new(LaunchOptions::default()).unwrap();
let tab = browser.new_tab().unwrap();
tab.enable_log().unwrap();
let result = tab.evaluate("console.assert(false);", true);
assert!(result.is_err(), "Expected JavaScript error!");
}
}
ইভেন্ট হ্যান্ডলিং সহ মরিচায় জাভাস্ক্রিপ্ট ত্রুটি সনাক্তকরণ উন্নত করা
মূল স্ক্রিপ্টটি ব্যবহার করে জাভাস্ক্রিপ্টের ত্রুটি সনাক্তকরণে মনোনিবেশ করে প্যাকেজ, ত্রুটি-হ্যান্ডলিং দক্ষতা অপ্টিমাইজ করাও অপরিহার্য। যেমন আরো জটিল ইভেন্ট প্রকার ব্যবহার করে প্রক্রিয়া উন্নত করার একটি পদ্ধতি। এই প্রোটোকল ইভেন্ট থেকে JavaScript ব্যতিক্রম সম্পর্কে আরও সুনির্দিষ্ট তথ্য পাওয়া যেতে পারে, এই ব্যর্থতাগুলি কীভাবে পরিচালনা করা হয় তার উপর প্রশাসকদের আরও সুনির্দিষ্ট নিয়ন্ত্রণ দেয়। এই ইভেন্ট শ্রোতা এমন পরিস্থিতিতে যেখানে রানটাইম ব্যতিক্রম বা ভুল কোডের কারণে ত্রুটিগুলি উত্পাদিত হয় সেখানে একটি সাধারণ দাবির ব্যর্থতার চেয়ে আরও তথ্য সরবরাহ করতে পারে।
ডিবাগিং ইভেন্টগুলির জন্য কান খোলা রাখার পাশাপাশি মরিচা দিয়ে ভুলগুলি সুন্দরভাবে পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, মরিচা এর এবং প্রকারগুলি বিকাশকারীরা বেসপোক ত্রুটির প্রকারগুলি তৈরি করতে ব্যবহার করতে পারেন। এটি জাভাস্ক্রিপ্ট ব্যর্থতা থেকে উন্নত ত্রুটি প্রচার এবং পুনরুদ্ধার সক্ষম করে আপনার মরিচা অ্যাপ্লিকেশনগুলিকে আরও শক্তিশালী করে তোলে। দ্ব্যর্থহীন বার্তাগুলির সাথে কনসোলে লগ ইন করে ত্রুটিগুলি আরও দ্রুত সনাক্ত করা যেতে পারে, বিশেষত যখন কোনও ব্রাউজার থেকে ভিজ্যুয়াল প্রতিক্রিয়া ছাড়াই হেডলেস পরিবেশে কাজ করা হয়।
উপরন্তু, পরীক্ষা বিভিন্ন পৃষ্ঠা বা জাভাস্ক্রিপ্ট প্রসঙ্গে চালানো যেতে পারে যখন ব্যবহার করা হয় আপনি বিভিন্ন ট্যাব বা সেশন নিয়ন্ত্রণ করে বিভিন্ন অনলাইন অ্যাপে আপনার জাভাস্ক্রিপ্ট সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করতে পারেন। ইন্টিগ্রেশন টেস্টিং পরিস্থিতিতে জাভাস্ক্রিপ্ট সমস্যাগুলির জন্য আপনাকে একসাথে বেশ কয়েকটি শেষ পয়েন্ট পরীক্ষা করার অনুমতি দিয়ে পৃথক স্ক্রিপ্টগুলি ডিবাগ করার সময় এটি অনেক সময় বাঁচাতে পারে।
- আমি কিভাবে ব্যবহার করতে পারেন জাভাস্ক্রিপ্ট ত্রুটির জন্য শুনতে মরিচা মধ্যে?
- রিয়েল-টাইমে জাভাস্ক্রিপ্ট সমস্যা সনাক্ত করতে, আপনি ব্যবহার করতে পারেন যেমন ঘটনা সংগ্রহ করার পদ্ধতি বা .
- মরিচায় জাভাস্ক্রিপ্ট ব্যতিক্রমগুলি পরিচালনা করার জন্য কি একটি ভাল পদ্ধতি আছে?
- হ্যাঁ, আপনি নিশ্চিত করতে পারেন যে আপনার প্রোগ্রামটি মরিচা ব্যবহার করে ব্যর্থতাগুলিকে সুন্দরভাবে পরিচালনা করতে পারে জাভাস্ক্রিপ্ট ত্রুটি সংগ্রহ এবং প্রেরণ করতে টাইপ করুন।
- ব্যবহার করে কি লাভ অন্যান্য ইভেন্টের উপর?
- জাভাস্ক্রিপ্ট ব্যতিক্রম সম্পর্কে আরও পুঙ্খানুপুঙ্খ বিবরণ অফার করে, যা রানটাইম ত্রুটি সনাক্তকরণ এবং লক্ষ্যবস্তু পরিচালনার সুবিধা দেয়।
- আমি কিভাবে বিভিন্ন জাভাস্ক্রিপ্ট ত্রুটির জন্য বিভিন্ন ট্যাব পরীক্ষা করতে পারি?
- ব্যবহার করে , আপনি বিভিন্ন ওয়েব পৃষ্ঠাগুলিতে জাভাস্ক্রিপ্ট সমস্যাগুলি পরীক্ষা করার জন্য অসংখ্য ট্যাব খুলতে এবং প্রতিটি ট্যাবে স্বতন্ত্র ইভেন্ট শ্রোতা যোগ করতে পারেন৷
- হেডলেস ব্রাউজারে লগিং জাভাস্ক্রিপ্ট ত্রুটি কেন গুরুত্বপূর্ণ?
- ব্যবহার করে গ্যারান্টি দেয় যে জাভাস্ক্রিপ্ট ব্যর্থতাগুলি ভাল ডিবাগিংয়ের জন্য কনসোলে সংরক্ষিত হয়েছে, কারণ হেডলেস ব্রাউজারগুলির একটি ভিজ্যুয়াল ইন্টারফেসের অভাব রয়েছে।
বিকাশকারীরা স্বয়ংক্রিয় প্রক্রিয়াগুলি ডিজাইন করতে পারে যা কার্যকরভাবে রাস্ট ব্যবহার করে জাভাস্ক্রিপ্ট সমস্যাগুলি সনাক্ত এবং পরিচালনা করে ক্রেট নির্ভরযোগ্য রিয়েল-টাইম ত্রুটি সনাক্তকরণের জন্য, ডিবাগার প্রোটোকল এবং ইভেন্ট শ্রোতা ব্যবহার করা যেতে পারে।
ব্যতিক্রমগুলি ঘটে যাওয়ার সাথে সাথে ধরা এবং বিকাশ প্রক্রিয়াটিকে স্ট্রিমলাইন করে, এই পদ্ধতিটি ডিবাগিং করার সময় ব্যয় করার পরিমাণ কমাতে সহায়তা করে। এটি মরিচা-এর ত্রুটি-হ্যান্ডলিং বৈশিষ্ট্যগুলির সাথে একত্রিত করে ডেভেলপারদের নিশ্চিত করতে দেয় যে তাদের অ্যাপগুলি হেডলেস প্রেক্ষাপটে সঠিকভাবে কাজ করছে।
- এই নিবন্ধটি ওয়েব অটোমেশন টুল এবং হেডলেস ব্রাউজার ক্রেটের জন্য অফিসিয়াল রাস্ট ডকুমেন্টেশনের উপর ভিত্তি করে তৈরি করা হয়েছিল , এ উপলব্ধ মাথাবিহীন ক্রোম ক্রেট .
- রাস্ট কমিউনিটি ফোরামে পাওয়া রাস্টে জাভাস্ক্রিপ্ট ত্রুটিগুলি পরিচালনা করার বিষয়ে বাস্তব-বিশ্বের উদাহরণ এবং আলোচনা থেকে অতিরিক্ত অন্তর্দৃষ্টি আঁকা হয়েছে: মরিচা ব্যবহারকারী ফোরাম .
- এই নিবন্ধে ব্যবহৃত Chrome-এর ডিবাগার এবং লগ প্রোটোকলের বিশদ বিবরণের জন্য, Chrome DevTools ডকুমেন্টেশন উল্লেখ করা হয়েছে: Chrome DevTools প্রোটোকল .