Nodemon - "干净退出 - 在重启之前等待更改"在安装过程中

时间:2018-01-31 04:36:26

标签: javascript node.js postgresql nodemon

我正在尝试使用Node和Postgres设置RESTful API。我遇到了一个问题,每当我尝试运行服务器(使用npm start)在本地测试它时,我得到以下输出:

  

[nodemon] 1.14.10 [nodemon]随时重启,输入rs [nodemon]观看: [nodemon]从node index.js server.js开始   [nodemon] clean exit - 在重新启动之前等待更改

在网上搜索了相当长的一段时间之后,我找不到太多关于究竟是什么"干净退出的资源 - 在重启之前等待更改"确切意味着,特别是在这种情况下。

这是我的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 }

这是我的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;

有关这里可能发生什么的任何想法?提前谢谢。

9 个答案:

答案 0 :(得分:6)

您的代码存在一些问题。你从未告诉你的应用程序运行。当您准备好创建路线时,您应该使用以下命令启动服务器:

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

此外,您在同一个文件中有一个Express应用程序和一个路由器。路由器应仅用作子模块(当您想要将应用程序划分为多个文件时很方便)。现在你无所事事。如果您删除路由器和导出,那么它应该可以正常工作。

答案 1 :(得分:0)

我也想知道nodemon记录的该语句。我只是在最近的几天才经历过。如果我的快速服务器代码中存在某些语法错误,则会出现此错误。当我通过

启动服务器时
> node server

服务器没有启动,甚至没有任何日志记录到控制台。 我认为行为很奇怪。看来此消息与nodemon无关。 我过去从未在node上经历过这样的事情。每次引入语法错误时,我都会收到一条错误消息,并将堆栈跟踪输出到控制台。

  

正如我之前所说的,这只是一个语法错误:.then块中缺少右括号。

毕竟,我不知道为什么节点没有像以前那样打印堆栈跟踪。

  

我将进一步调查,但从此类错误中学习的一件事可能是使用linter编写javascript代码,或者更进一步,然后使用TypeScript。我使用TypeScript使用Angular开发客户端,并且尽早发现语法错误的可能性很大。

答案 2 :(得分:0)

   app.listen(5010,function(){
      console.log("server is running on port 5010");
   });

//添加上面的代码以解决此问题

答案 3 :(得分:0)

在处理另一个Node应用程序(主文件:index.js)后返回一个Node应用程序(主文件:app.js)后,我遇到了类似的问题。

如果我输入

Nodemon app 

我收到类似

的消息
[nodemon] starting `node app index.js`
[nodemon] clean exit - waiting for changes before restart

我试用了Nodemon的版本(更新没有影响),然后尝试输入

Node app

并得到了正常的正常工作响应,即

[nodemon] 1.19.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
HTTP server started at port 3000 ...

输入时我也能正确运行

Nodemon app.js 

现在,通常直到那时,无论您输入 app.js 还是 app 都没有区别-但是在这里 确实如此 似乎有所不同。也许其他节点应用程序的某些缓存设置(即使用index.js作为主要脚本并使用 app 作为该文件中的对象的那些设置)被保留并以某种方式引用。

这里有Nodemon精通的人来解释这个吗?

答案 4 :(得分:0)

如果仍然有人对此存在问题,我该如何解决我的问题是我发现数据库未连接,因此我正在使用mongodb进行设置,因此请使用mongod命令设置mongo并使用任一节点app.js再次运行服务器或nodemon app.js修复了我的问题

答案 5 :(得分:0)

解决方案1:

首先请确保您已经为Node-Express应用程序添加了以下代码行,

 // 3000 is the port number in my case.
    app.listen(3000, function() {
        console.log("Server is running on port " + 3000);
    });

在主文件中(例如我的app.js)启动服务器。

解决方案2:

打开您的package.json文件。 检查主要字段的文件名。
就我而言 {...,“ main”:“ app.js ”,...}。 此 app.js 是程序的主要入口点。 现在,尝试使用以下命令启动服务器,

nodemon app.js

node app.js

解决方案3:

如果您的程序与之一起运行,

node app.js

但不可以

nodemon app.js

然后,此问题与 nodemon 有关。 如果您的项目中有文件名 index.js app.js ,则删除 index.js 将解决问题。

如果index.js是程序的入口点,请尝试上面给出的解决方案2,并将 package.json 文件中的 main 字段值更改为 index.js 即{...,“ main”:“ index.js ”,...}。 这样可以解决您的问题。

答案 6 :(得分:0)

如果您使用快速生成器,您的程序将在浏览器上显示拒绝连接的错误,而不是在终端上尝试此代码

<块引用>

npm 启动 要么 nodemon 启动

答案 7 :(得分:0)

经过数小时寻找解决方案,为什么我在 docker 中的生产节点构建总是立即停止并退出 0,我发现 docker-images 的节点版本不兼容。如果您在 docker 中遇到此问题,请尝试不同的节点版本

答案 8 :(得分:0)

我也遇到过同样的问题。

节点版本为 14.15.5。

所以安装了 node 12.22 版本并且工作正常。