it-swarm.com.de

Nodemon - "Clean Exit - Warten auf Änderungen vor dem Neustart" während des Setups

Ich versuche, eine RESTful-API mit Node und Postgres einzurichten. Ich bin auf ein Problem gestoßen, bei dem ich, wenn ich versuche, den Server (mit npm start) auszuführen, um ihn lokal zu testen, die folgende Ausgabe erhalten:

[nodemon] 1.14.10 [nodemon] Um jederzeit einen Neustart durchzuführen, geben Sie rs [nodemon] ein, wobei Sie Folgendes beachten:. [nodemon] Start von node index.js server.js [nodemon] clean exit - Warten auf Änderungen vor dem Neustart

Nach längerer Online-Suche kann ich nicht zu viele Ressourcen finden, was genau "sauberes Beenden - Warten auf Änderungen vor dem Neustart" bedeutet, insbesondere in diesem Fall.

Dies ist meine Datei queries.js:

  1 var promise = require('bluebird');
  2 
  3 var options = {
  4   // Initialization Options
  5   promiseLib: promise
  6 };
  7 
  8 // created an instance of pg-promise, override default pgp lib w bluebird
  9 var pgp = require('pg-promise')(options);
 10 var connectionString = 'postgres://localhost:3000/actions';
 11 var db = pgp(connectionString);
 12 
 13 // add query functions
 14 
 15 module.exports = {
 16   getAllActions: getAllActions,
 17 //  getSingleAction: getSingleAction,
 18 //  createAction: createAction,
 19 //  updateAction: updateAction,
 20 //  removeAction: removeAction
 21 };
 22 
 23 function getAllActions(req, res, next) {
 24   db.any('select * from acts')
 25     .then(function (data) {
 26       res.status(200)
 27         .json({
 28           status: 'success',
 29           data: data,
 30           message: 'Retrieved ALL actions'
 31         });
 32     })
 33     .catch(function (err) {
 34       return next(err);
 35     });
 36 }

Hier ist meine index.js-Datei: 

  3 var express = require('express');
  4 var app = express();
  5 var router = express.Router();
  6 var db = require('./queries');
  7 
  8 // structure: expressInstance.httpRequestMethod(PATH, HANDLER)
  9 app.get('/api/actions', db.getAllActions);
 10 //app.get('/api/actions/:id', db.getSingleAction);
 11 //app.post('/api/actions', db.createAction);
 12 //app.put('/api/actions/:id', db.updateAction);
 13 //app.delete('/api/actions/:id', db.removeAction);
 14 
 15 module.exports = router;

Irgendwelche Gedanken, was hier los sein könnte? Danke im Voraus.

4
cosmicluna

Es gibt ein paar Dinge, die mit Ihrem Code falsch sind. Sie haben nie gesagt, dass Ihre App ausgeführt werden soll. Wenn Sie mit dem Erstellen Ihrer Routen fertig sind, sollten Sie Ihren Server mit:

app.listen(<port on which the server should run here>);

Sie haben auch eine Express-App und einen Router in derselben Datei. Der Router sollte nur als Untermodul verwendet werden (praktisch, wenn Sie Ihre App auf mehrere Dateien aufteilen möchten). Im Moment machst du nichts damit. Wenn Sie den Router entfernen und den Export durchführen, sollte dies einwandfrei funktionieren.

4
Kamil Kulach

Ich frage mich auch, ob diese Aussage von nodemon protokolliert wird. Ich erlebte dies nur die letzten Sichttage. Diese Fehlermeldung wird angezeigt, wenn in meinem Express-Servercode ein Syntaxfehler vorhanden ist. Wenn ich den Server über starte

> node server

der Server startet nicht und protokolliert sogar nichts auf der Konsole . Seltsames Verhalten, denke ich. Es hat den Anschein, dass diese Nachricht nichts mit nodemon zu tun hat. Ich hatte so etwas noch nie mit node in der Vergangenheit erlebt. Jedes Mal, wenn ein Syntaxfehler eingeführt wurde, erhielt ich eine Fehlermeldung mit der Stack-Ablaufverfolgung, die an die Konsole ausgegeben wurde.

Wie gesagt, es war nur ein Syntaxfehler: In einem .then-Block fehlte eine schließende Klammer.

Schließlich weiß ich nicht, warum Node die Stack-Trace nicht so gedruckt hat, wie ich sie zuvor erlebt habe.

Ich untersuche weiter, aber eine Sache, die ich aus dieser Art Fehler lernen kann, ist wahrscheinlich, einen Linter zum Schreiben von Javascript-Code zu verwenden oder einen Schritt weiter zu gehen und TypeScript zu verwenden. Ich verwende TypeScript für die Entwicklung des Clients mit Angular, und die Möglichkeiten, Syntaxfehler früh zu erkennen, sind groß.

0
Torsten Barthel