Der Fehler/kann nicht abgerufen werden (oder Cannot GET /some-path) im Browser beim Zugriff auf Ihren Express-Server bedeutet, dass Express die Anfrage erhalten hat, aber keinen Route-Handler für diesen Pfad und diese Methode hat. Hier erfahren Sie, wie Sie jede Ursache beheben können.
📋 Table of Contents
- Was dieser Fehler bedeutet
- Ursache 1: Für den Pfad
- ist keine Route definiert Ursache 2: Falsche HTTP-Methode
- Ursache 3: Statische Dateien werden falsch bereitgestellt
- Cause 4: Route Defined After app.listen or Middleware Order
- Ursache 5: Abschließender Schrägstrich oder Pfadkonflikt
- Ursache 6: Router nicht richtig montiert
- Debuggen: Sehen Sie sich Ihre registrierten Routen an
- Richtige 404-Handhabung
- Häufig gestellte Fragen
- Fazit
Was dieser Fehler bedeutet
“Cannot GET /path” is Express’s default 404 response — it received a GET request for /path but found no matching route. The request reached your server (good), but no route handles it. The fix is defining the right route or serving the right files.
Ursache 1: Für den Pfad
// 🐛 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);
ist keine Route definiert Ursache 2: Falsche HTTP-Methode
// 🐛 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
Ursache 3: Statische Dateien werden falsch bereitgestellt
// 🐛 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');
});
Cause 4: Route Defined After app.listen or Middleware Order
// 🐛 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
Ursache 5: Abschließender Schrägstrich oder Pfadkonflikt
// 🐛 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);
Ursache 6: Router nicht richtig montiert
// 🐛 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
Debuggen: Sehen Sie sich Ihre registrierten Routen an
// 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
Richtige 404-Handhabung
// 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}` });
});
Häufig gestellte Fragen
F: Warum erhalte ich die Meldung „Cannot GET /“ im Root-Pfad?
A: Sie haben keine Route für/definiert . Fügen Sieapp.get('/', (req, res) => res.send('Hello'))hinzu oder statische Dateien mitapp.use(express.static('public'))bereitstellen daher wird index.html im Stammverzeichnis geladen.
F: Meine POST-Route funktioniert, aber GET gibt Cannot GET aus. Warum?
A: Sie haben die Route mitapp.post()definiert but are making a GET request (e.g., typing the URL in a browser, which sends GET). Fügen Sie einapp.get()hinzu Route für diesen Pfad, wenn Sie auch GET-Anfragen verarbeiten müssen.
F: Wie stelle ich eine HTML-Seite im Stammverzeichnis bereit?
A: Verwenden Sieapp.use(express.static('public')) to serve a directory (index.html loads at /), or app.get('/', (req, res) => res.sendFile(__dirname + '/index.html')) für eine bestimmte Datei.
F: Warum wird bei den Routen meines Routers Cannot GET angezeigt?
A: You may not have mounted the router (app.use('/prefix', router)), or the full path is different than expected. Ein Router, der unter/usersmontiert ist mit einer Route/list Der Zugriff erfolgt unter/users/list, nicht/list. Überprüfen Sie den kombinierten Pfad.
F: Spielt die Routenreihenfolge in Express eine Rolle?
A: Ja – Express gleicht Routen von oben nach unten ab. A catch-all or 404 middleware must come LAST, after all specific routes, or it intercepts requests before they reach your routes. Ordnen Sie Ihre Routen von spezifisch bis allgemein.
Fazit
“Cannot GET /” means Express received the request but has no matching route for that path and method. Die Korrekturen:define a route for the path (app.get('/', ...)), match the correct HTTP method, serve static files with express.static(), Routen vorapp.listen()definieren , und setzen Sie 404-Handler zuletzt. If it’s a router, ensure it’s mounted with the right prefix. When stuck, log your registered routes to confirm what actually exists. Once you verify the route is defined, mounted correctly, and matches the request method and path, the error resolves.
🔗 Share this article
✍️ Leave a Comment