ত্রুটিপেতে পারে না / আপনার এক্সপ্রেস সার্ভারে আঘাত করার সময় ব্রাউজারে (বা পেতে পারে না /কিছু-পাথ) মানে এক্সপ্রেস অনুরোধ পেয়েছে কিন্তু সেই পথ এবং পদ্ধতির জন্য কোনো রুট হ্যান্ডলার নেই। প্রতিটি কারণ কীভাবে ঠিক করা যায় তা এখানে।
📋 Table of Contents
- এই ত্রুটির মানে কি
- কারণ 1: পথের জন্য কোন রুট সংজ্ঞায়িত করা হয়নি
- কারণ 2: ভুল HTTP পদ্ধতি
- কারণ 3: স্ট্যাটিক ফাইলগুলি ভুলভাবে পরিবেশন করা
- কারণ 4: app.listen বা মিডলওয়্যার অর্ডারের পরে রুট সংজ্ঞায়িত করা হয়েছে
- কারণ 5: ট্রেইলিং স্ল্যাশ বা পথের অমিল
- কারণ 6: রাউটার সঠিকভাবে মাউন্ট করা হয়নি
- ডিবাগিং: আপনার নিবন্ধিত রুট দেখুন
- সঠিক 404 হ্যান্ডলিং
- প্রায়শই জিজ্ঞাসিত প্রশ্ন
- "GET /" এর অর্থ হল এক্সপ্রেস অনুরোধটি পেয়েছে কিন্তু সেই পথ এবং পদ্ধতির জন্য কোনও মিলিত রুট নেই৷ সংশোধন:
এই ত্রুটির মানে কি
“/পথ পেতে পারে না” হল এক্সপ্রেসের ডিফল্ট 404 প্রতিক্রিয়া — এটি /পথের জন্য একটি GET অনুরোধ পেয়েছে কিন্তু কোনো মিলিত রুট খুঁজে পাওয়া যায়নি। অনুরোধটি আপনার সার্ভারে পৌঁছেছে (ভাল), কিন্তু কোন রুট এটি পরিচালনা করে না। সমাধান হল সঠিক রুট নির্ধারণ করা বা সঠিক ফাইল পরিবেশন করা।
কারণ 1: পথের জন্য কোন রুট সংজ্ঞায়িত করা হয়নি
// 🐛 Server has no route for the root path
const express = require('express');
const app = express();
app.listen(3000);
// Visiting http://localhost:3000/ → "Cannot GET /"
// ✅ Define a route for /
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(3000);
কারণ 2: ভুল HTTP পদ্ধতি
// 🐛 Route is POST but you're making a GET request
app.post('/users', createUser);
// Browsing to /users (a GET) → "Cannot GET /users"
// (the POST route exists, but not a GET route)
// ✅ Add a GET route if you need one
app.get('/users', getUsers); // for GET requests
app.post('/users', createUser); // for POST requests
কারণ 3: স্ট্যাটিক ফাইলগুলি ভুলভাবে পরিবেশন করা
// 🐛 Expecting index.html to serve but static middleware isn't set up
// Visiting / → "Cannot GET /" because there's no route or static config
// ✅ Serve static files (HTML, CSS, JS) from a directory
app.use(express.static('public'));
// Now files in ./public are served: /index.html at /, /style.css, etc.
// ✅ Or serve a specific file at the root
app.get('/', (req, res) => {
res.sendFile(__dirname + '/public/index.html');
});
কারণ 4: app.listen বা মিডলওয়্যার অর্ডারের পরে রুট সংজ্ঞায়িত করা হয়েছে
// 🐛 Routes defined AFTER listen() never register
app.listen(3000);
app.get('/', handler); // ❌ too late - server already started
// ✅ Define routes BEFORE listen()
app.get('/', handler);
app.listen(3000);
// 🐛 A catch-all or 404 middleware BEFORE your routes intercepts everything
app.use((req, res) => res.status(404).send('Not found'));
app.get('/users', getUsers); // ❌ never reached - 404 middleware ran first
// ✅ Put the 404 handler LAST
app.get('/users', getUsers);
app.use((req, res) => res.status(404).send('Not found')); // last
কারণ 5: ট্রেইলিং স্ল্যাশ বা পথের অমিল
// 🐛 Route path doesn't exactly match the request
app.get('/users', getUsers);
// Request to /users/ (trailing slash) may not match depending on config
// ✅ Express matches /users and /users/ by default in most versions,
// but be consistent. For explicit control:
app.get('/users', getUsers);
// Or handle both:
app.get(['/users', '/users/'], getUsers);
কারণ 6: রাউটার সঠিকভাবে মাউন্ট করা হয়নি
// 🐛 Router defined but not mounted, or wrong prefix
const router = express.Router();
router.get('/list', getList);
// Forgot to mount it, or mounted at wrong path
// ✅ Mount the router with a base path
const usersRouter = express.Router();
usersRouter.get('/list', getList);
app.use('/users', usersRouter);
// Now the route is at /users/list, not /list
ডিবাগিং: আপনার নিবন্ধিত রুট দেখুন
// List all registered routes to verify what exists
app._router.stack
.filter(layer => layer.route)
.forEach(layer => {
const methods = Object.keys(layer.route.methods).join(', ').toUpperCase();
console.log(`${methods} ${layer.route.path}`);
});
// Prints: GET /, POST /users, etc.
// Confirms whether the route you expect actually exists
সঠিক 404 হ্যান্ডলিং
// Define all your routes first
app.get('/', homeHandler);
app.get('/users', getUsers);
app.post('/users', createUser);
// Then a catch-all 404 handler LAST (nicer than default "Cannot GET")
app.use((req, res) => {
res.status(404).json({ error: `Route not found: ${req.method} ${req.path}` });
});
প্রায়শই জিজ্ঞাসিত প্রশ্ন
প্রশ্নঃ কেন আমি রুট পাথে “Cannot GET /” পেতে পারি?
উত্তর: আপনি/এর জন্য একটি রুট সংজ্ঞায়িত করেননি৷ . যোগ করুনapp.get('/', (req, res) => res.send('Hello')) অথবাapp.use(express.static('public'))দিয়ে স্ট্যাটিক ফাইল পরিবেশন করুন তাই index.html রুটে লোড হয়।
প্রশ্ন: আমার পোস্ট রুট কাজ করে কিন্তু GET দেয় GET পারে না। কেন?
উত্তর: আপনিapp.post()দিয়ে রুটটি সংজ্ঞায়িত করেছেন৷ কিন্তু একটি GET অনুরোধ করছেন (যেমন, একটি ব্রাউজারে URL টাইপ করা, যা GET পাঠায়)। একটি যোগ করুনapp.get() আপনি যদি GET অনুরোধগুলিও পরিচালনা করতে চান তবে সেই পথের জন্য রুট করুন।
প্রশ্নঃ আমি কিভাবে রুটে একটি HTML পৃষ্ঠা পরিবেশন করব?
উঃ ব্যবহারapp.use(express.static('public')) একটি ডিরেক্টরি পরিবেশন করতে (index.html / এ লোড হয়), অথবাapp.get('/', (req, res) => res.sendFile(__dirname + '/index.html')) একটি নির্দিষ্ট ফাইলের জন্য।
প্রশ্নঃ আমার রাউটারের রুটগুলো কেন GET দিতে পারে না?
উত্তর: আপনি হয়তো রাউটারটি মাউন্ট করেননি ( ), অথবা সম্পূর্ণ পথটি প্রত্যাশার চেয়ে আলাদা। একটি রাউটারapp.use('/prefix', router)এ মাউন্ট করা হয়েছে৷ একটি রুট সহ/users এ অ্যাক্সেস করা হয়/list, না/users/list. সম্মিলিত পথ পরীক্ষা করুন./listপ্রশ্নঃ এক্সপ্রেসে কি রুট অর্ডার গুরুত্বপূর্ণ?
উত্তর: হ্যাঁ — এক্সপ্রেস উপরের থেকে নীচের রুটের সাথে মেলে। একটি ক্যাচ-অল বা 404 মিডলওয়্যার অবশ্যই সমস্ত নির্দিষ্ট রুটের পরে শেষ পর্যন্ত আসতে হবে, অথবা এটি আপনার রুটে পৌঁছানোর আগে অনুরোধগুলিকে বাধা দেয়। নির্দিষ্ট থেকে সাধারণ আপনার রুট অর্ডার.
উপসংহার
“GET /” এর অর্থ হল এক্সপ্রেস অনুরোধটি পেয়েছে কিন্তু সেই পথ এবং পদ্ধতির জন্য কোনও মিলিত রুট নেই৷ সংশোধন:
পথের জন্য একটি রুট সংজ্ঞায়িত করুন ( ), সঠিক HTTP পদ্ধতির সাথে মেলে, স্থির ফাইলগুলিকেদিয়ে পরিবেশন করুন , আগে রুট সংজ্ঞায়িত করুনapp.get('/', ...), এবং 404 হ্যান্ডলারদের শেষ রাখুনexpress.static(). যদি এটি একটি রাউটার হয় তবে নিশ্চিত করুন যে এটি সঠিক উপসর্গের সাথে মাউন্ট করা আছে। আটকে গেলে, আসলে কী আছে তা নিশ্চিত করতে আপনার নিবন্ধিত রুটগুলিতে লগ করুন। একবার আপনি রুটটি সংজ্ঞায়িত, সঠিকভাবে মাউন্ট করা এবং অনুরোধের পদ্ধতি এবং পথের সাথে মেলে যাচাই করলে, ত্রুটিটি সমাধান হয়ে যায়।app.listen(). যদি এটি একটি রাউটার হয় তবে নিশ্চিত করুন যে এটি সঠিক উপসর্গের সাথে মাউন্ট করা আছে। আটকে গেলে, আসলে কী আছে তা নিশ্চিত করতে আপনার নিবন্ধিত রুটগুলিতে লগ করুন। একবার আপনি রুটটি সংজ্ঞায়িত, সঠিকভাবে মাউন্ট করা এবং অনুরোধের পদ্ধতি এবং পথের সাথে মেলে যাচাই করলে, ত্রুটিটি সমাধান হয়ে যায়।. যদি এটি একটি রাউটার হয় তবে নিশ্চিত করুন যে এটি সঠিক উপসর্গের সাথে মাউন্ট করা আছে। আটকে গেলে, আসলে কী আছে তা নিশ্চিত করতে আপনার নিবন্ধিত রুটগুলিতে লগ করুন। একবার আপনি রুটটি সংজ্ঞায়িত, সঠিকভাবে মাউন্ট করা এবং অনুরোধের পদ্ধতি এবং পথের সাথে মেলে যাচাই করলে, ত্রুটিটি সমাধান হয়ে যায়।
🔗 Share this article
✍️ Leave a Comment