web-dev-qa-db-ja.com

Nodemon-セットアップ中に「クリーンな終了-再起動前に変更を待機」

NodeとPostgresでRESTful APIを設定しようとしています。サーバーを実行しようとすると(npm startを使用)ローカルでテストしようとすると、次の出力:

[nodemon] 1.14.10 [nodemon]いつでも再起動するには、rs [nodemon]ウォッチングを入力します。 [nodemon] starting node index.js server.js [nodemon]きれいな出口-再起動前に変更を待機

かなり長い間オンラインで検索した後、特にこの場合は、「クリーンな出口-再起動前に変更を待機する」という意味が正確に何を意味するかについて、あまりにも多くのリソースを見つけることができません。

これは私のquerys.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 }

Index.jsファイルは次のとおりです。

  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;

ここで何が起こっているのだろうか?前もって感謝します。

7
cosmicluna

コードにはいくつか問題があります。アプリを実行するように指示したことはありません。ルートを作成する準備ができたら、次を使用してサーバーを起動する必要があります。

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

また、同じファイルにExpressアプリとルーターがあります。ルーターは、サブモジュールとしてのみ使用する必要があります(アプリを複数のファイルに分割する場合に便利です)。今、あなたはそれで何もしていません。ルーターとエクスポートを削除すると、正常に機能するはずです。

7
Kamil Kulach

Nodemonによって記録されたこのステートメントについても疑問に思っています。私はこれを最後の視聴日だけに経験しました。エクスプレスサーバーコードに構文エラーが存在する場合、このエラーが発生します。サーバーを起動するとき

> node server

サーバーは起動せず、コンソールにも何も記録しません。奇妙な行動だと思う。このメッセージは、nodemonとは何の関係もないようです。過去にノードでそのようなことを経験したことはありません。構文エラーが発生するたびに、コンソールに出力されたスタックトレースを含むエラーメッセージが表示されました。

前に言ったように、それは単なる構文エラーでした:.thenブロックに閉じ括弧がありませんでした。

結局、以前に経験したように、ノードがスタックトレースを出力しなかった理由がわかりません。

さらに調査しますが、この種のエラーから学ぶべきことの1つは、おそらくJavaScriptコードを記述するためにリンターを使用するか、さらに一歩進んでTypeScriptを使用することです。 Angularでクライアントを開発するためにTypeScriptを使用し、構文エラーを早期に検出する可能性は素晴らしいです。

0
Torsten Barthel