Ich habe die Anweisungen zum Einrichten einer Node.js-Anwendung mit Loopback wie auf Toptal und Developing APIs with Node.js and LoopBack.io beschrieben folgen. Nach diesen Schritten erhalte ich einen UrlNotFoundError, wenn ich versuche, auf die REST-API für die Anwendung zuzugreifen.Loopback löst UrlNotFoundError aus der Box
Schritte zum Reproduzieren:
- die Befehlszeile Strongloop installiert:
$ npm install -g strongloop
- Führen Sie die Anwendung Generators Loopback:
$ slc loopback
. - Führen Sie das Projekt:
$ node .
Das Terminal zeigt die folgende
Web server listening at: http://0.0.0.0:3000 Browse your REST API at http://0.0.0.0:3000/explorer
- Durchsuchen Sie die REST-API.
- Versuchen Sie, mit dem bereitgestellten Modell an/Benutzer zu senden.
Daraus ergibt sich die folgende Antwort:
{
"error": {
"statusCode": 404,
"name": "Error",
"message": "Cannot POST /api/Users",
"status": 404,
"stack": "Error: Cannot POST /api/Users\n at raiseUrlNotFoundError (/Repos/loopback-test/node_modules/loopback/server/middleware/url-not-found.js:20:17)\n at Layer.handle [as handle_request] (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:312:13)\n at /Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:280:7\n at Function.process_params (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)\n at next (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:271:10)\n at /loopback-test/node_modules/loopback/node_modules/async/dist/async.js:486:20\n at replenish (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:879:29)\n at /loopback-test/node_modules/loopback/node_modules/async/dist/async.js:888:13\n at eachLimit$1 (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:3136:26)\n at Object.<anonymous> (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:920:20)\n at restApiHandler (/Repos/loopback-test/node_modules/loopback/server/middleware/rest.js:63:11)\n at Layer.handle [as handle_request] (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)\n at trim_prefix (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:312:13)\n at /Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:280:7\n at Function.process_params (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)"
}
}
Was ich versucht habe:
- Einrichtung und Verbindung mit einer Datenbank, gemäß den Anweisungen in der Toptal Post.
- Das API-Projekt und das Beispiel Notes-Projekt wurden getestet, als das Loopback-Projekt eingerichtet wurde (Schritt 2 oben).
- Verglichen wurde das Projekt mit einem anderen Loopback-Projekt, an dem ich arbeite, wo die REST-API funktioniert. Leider bin ich nicht erfahren genug, um einen signifikanten Unterschied zu erkennen.
- Implementieren Sie ein benutzerdefiniertes Modell (sowohl im Toptal-Beitrag als auch im Youtube-Video), und versuchen Sie, über die REST-API darauf zuzugreifen.
- Nach dem raiseUrlNotFoundError gesucht. Der beste Treffer ist this issue on GitHub, der eine (tote) Verbindung zu a SO question bietet.
- Es wurde versucht, das Projekt auf einem anderen Port als dem Standard 3000 auszuführen, falls es ein Problem mit anderen Projekten gab.
- Setup automigration der gemeinsamen Modelle in der Datenbank. Der Datenbank wurde ein Benutzer und ein AccessStoken hinzugefügt, und es wurde versucht, diesen AccessStoken im REST-API-Explorer zu verwenden.
Ich verwende Mac OS X, Version 10.11.6. Ich habe Knoten, npm und andere notwendige Werkzeuge installiert.
Was vermisse ich oder was kann ich tun, um zu verhindern, dass der raiseUrlNotFoundError auftritt, und auf die REST-API für mein Projekt zuzugreifen?
Ah, versuchen Sie nicht, dass! Werde es versuchen, wenn ich heute Abend nach Hause komme. – HenricF
Ja, das war es. Das Erstellen der App mit Loopback 2.x funktionierte gut. Wie Sie vorgeschlagen haben, hat das vorhandene Projekt auch Version 2.x ausgeführt. Vielen Dank! – HenricF