NodeとPostgresでRESTful APIを設定しようとしています。サーバーを実行しようとすると(npm startを使用)ローカルでテストしようとすると、次の出力:
[nodemon] 1.14.10 [nodemon]いつでも再起動するには、
rs
[nodemon]ウォッチングを入力します。。 [nodemon] startingnode 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;
ここで何が起こっているのだろうか?前もって感謝します。
コードにはいくつか問題があります。アプリを実行するように指示したことはありません。ルートを作成する準備ができたら、次を使用してサーバーを起動する必要があります。
app.listen(<port on which the server should run here>);
また、同じファイルにExpressアプリとルーターがあります。ルーターは、サブモジュールとしてのみ使用する必要があります(アプリを複数のファイルに分割する場合に便利です)。今、あなたはそれで何もしていません。ルーターとエクスポートを削除すると、正常に機能するはずです。
Nodemonによって記録されたこのステートメントについても疑問に思っています。私はこれを最後の視聴日だけに経験しました。エクスプレスサーバーコードに構文エラーが存在する場合、このエラーが発生します。サーバーを起動するとき
> node server
サーバーは起動せず、コンソールにも何も記録しません。奇妙な行動だと思う。このメッセージは、nodemonとは何の関係もないようです。過去にノードでそのようなことを経験したことはありません。構文エラーが発生するたびに、コンソールに出力されたスタックトレースを含むエラーメッセージが表示されました。
前に言ったように、それは単なる構文エラーでした:.thenブロックに閉じ括弧がありませんでした。
結局、以前に経験したように、ノードがスタックトレースを出力しなかった理由がわかりません。
さらに調査しますが、この種のエラーから学ぶべきことの1つは、おそらくJavaScriptコードを記述するためにリンターを使用するか、さらに一歩進んでTypeScriptを使用することです。 Angularでクライアントを開発するためにTypeScriptを使用し、構文エラーを早期に検出する可能性は素晴らしいです。