2016-09-09 6 views
0

Während ich durch this tutorial ging, stieß ich auf ein Problem, bei dem die Router-Methoden nicht funktionieren würden. Wenn Sie npm start verwenden und auf localhost: 3000/api/puppies zugreifen, wird ein Fehler 404 angezeigt. Allerdings, wenn ichExpress router.get schlägt fehl, aber app.get funktioniert

geändert
var router = express.Router(); 
router.get('/api/puppies', db.getAllPuppies); 

zu

var app = express(); 
app.get('/api/puppies', db.getAllPuppies); 

und laufen mit node index.js, die Daten druckt, wie erwartet. Ich habe auch versucht, am Anfang meiner Datei

aber keine Freude zu setzen. Hat das etwas mit npm start zu tun? An einer Stelle habe ich den Code buchstäblich aus dem Tutorial kopiert und eingefügt, und trotzdem bekomme ich die 404s.

Antwort

1

Ein Router muss mit Ihrer Express-App verbunden sein, um Teil Ihres Servers zu sein.

app.use(yourRouter); 

oder häufiger mit einem Weg, dass dieser Router-Effekt nur URLs Isolaten, die mit einem bestimmten Pfad beginnen und die eigenen URLs des Routers sind auf diesem Weg relativ:

app.use('/somePath', yourRouter); 

Ohne dies ist es nur ein deklarierter und konfigurierter Router, der nicht an einen Server angeschlossen ist.

Express-Dokumentation examples here.


Die Anleitung, auf die Sie verweisen, scheint diesen Teil der Verwendung eines Routers nicht anzuzeigen.

+0

Also 'app.use ('/ api', Router); router.get ('/ api/puppies', db.getAllPuppies); 'scheint sinnvoll zu sein. Allerdings bekomme ich immer noch den 404. – 1252748

+0

@ 1252748 - Nein. Sie registrieren URL-Handler für '/ api/api/puppies'. Entfernen Sie eine der '/ api'-Spezifikationen. FYI, der Code in Frage von diesem Tutorial ist hier: https://github.com/mjhea0/node-postgres-promises/blob/master/app.js#L24. Das Tutorial verwendet 'app.use ('/', routes);'. – jfriend00

+0

Hmm. Er hat es ein bisschen kompliziert. Ihr Vorschlag lautet dann: 'app.use ('/ api', Router); router.get ('/ welpen', db.getAllPuppies); 'Es ist der gleiche Fehler. – 1252748

Verwandte Themen