簡體   English   中英

Nodemon - 在安裝過程中“干凈退出 - 等待重新啟動前的更改”

[英]Nodemon - "clean exit - waiting for changes before restart" during setup

我正在嘗試使用 Node 和 Postgres 設置 RESTful API。 我遇到了一個問題,每當我嘗試運行服務器(使用 npm start)在本地測試它時,我都會得到以下輸出:

[nodemon] 1.14.10 [nodemon] 隨時重啟,輸入rs [nodemon] watching: [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;

對這里可能發生的事情有什么想法嗎? 提前致謝。

您的代碼有一些問題。 你從來沒有告訴你的應用程序運行。 當你准備好創建你的路由時,你應該啟動你的服務器:

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

此外,您在同一個文件中有一個 Express 應用程序和一個路由器。 路由器只能用作子模塊(當您想將應用程序划分為多個文件時很方便)。 現在你什么都不做。 如果您刪除路由器和導出,那么它應該可以正常工作。

我也想知道 nodemon 記錄的這個語句。 我只有在最后幾天才經歷過。 如果我的快速服務器代碼中存在一些語法錯誤,我會收到此錯誤。 當我通過

> node server

服務器沒有啟動,甚至沒有將任何內容記錄到控制台。 我認為奇怪的行為。 這個消息似乎與nodemon無關。 我過去從未在節點上經歷過這樣的事情。 每次引入語法錯誤時,我都會收到一條錯誤消息,其中堆棧跟蹤輸出到控制台。

正如我之前所說,這只是一個語法錯誤:.then 塊中缺少右括號。

畢竟我不知道為什么節點沒有像我以前經歷過的那樣打印堆棧跟蹤。

我進一步調查,但從這種錯誤中學到的一件事可能是使用 linter 來編寫 javascript 代碼,或者更進一步並使用 TypeScript。 我使用 TypeScript 來開發帶有 Angular 的客戶端,並且早期檢測語法錯誤的可能性很大。

如果有人仍然對此有疑問,我的解決方法是我發現我的數據庫未連接我正在使用 mongodb 進行設置,因此使用 mongod 命令設置 mongo 並使用 node app.js 或 nodemon app 再次運行服務器.js 修復了我的

我也面臨同樣的問題。

節點版本是 14.15.5。

所以安裝了節點 12.22 版本並且工作正常。

我有同樣的問題,但我的問題是非常簡單的新手問題 - 在這里添加它以防那些新表達的代碼和這種類型的代碼犯同樣的錯誤

我在我的“app.get”代碼中不知不覺地包含了“app.listen”(是的,我知道,這是非常基本的錯誤,但令人沮喪,因此在這里給出了我的選擇)

錯誤的方法

app.get("/", (req, res) => {
    res.send(req.query);
*....additional code here...*
app.listen(port, () => {
    console.log("hey app is listening");
});

});

正確的路-

app.get("/", (req, res) => {
    res.send(req.query);
});
app.listen(port, () => {
    console.log("hey app is listening");
});

面對同樣的問題,我只是刪除了 node_modules 文件夾和 package-lock.json 文件並重新安裝了依賴項,它就可以工作了。

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

// 添加上面的代碼來解決這個問題

在處理另一個 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都沒有區別 - 但在這里似乎確實有所作為。 也許其他 Node 應用程序的一些緩存設置(即使用 index.js 作為主腳本並使用app作為該文件中的對象的設置)被保留並以某種方式引用。

這里有精通Nodemon的人來解釋一下嗎?

解決方案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.jsapp.js文件,則刪除index.js將解決問題。

如果 index.js 是您程序的入口點,請嘗試上面給出的解決方案 2,並將package.json文件中的字段值更改為index.js即 {...,"main": " index.js ", ...}。 這將解決您的問題。

如果您使用快速生成器,您的程序將在瀏覽器拒絕連接上顯示錯誤,而不是在終端上嘗試此代碼

npm start 或 nodemon start

在尋找解決方案數小時后,為什么我在 docker 中的生產節點構建總是立即以退出 0 停止,我發現 docker-images 的節點版本不兼容。 如果您在 docker 中遇到此問題,請嘗試不同的節點版本

[nodemon] 啟動node index.js URI 格式錯誤 [nodemon] 干凈退出 - 等待更改再重新啟動

我可以通過將連接 url 密碼中的“@”符號更改為 %40 來解決此問題

這是 2022 年,所以如果有人仍然有這個錯誤,這里有一個對我有用的修復程序。 確保“scripts”package.json 中的“start”命令指向應用程序的入口文件。

`
 "scripts": {

 "dev": "nodemon src/server.ts",

 "start": "nodemon dist/server.js",

 "postinstall": "tsc"
}

`

你調用開始了嗎? 對我來說,這是 app.js 中的一個問題。

[nodemon] clean exit - 在重啟之前等待更改?

答:檢查你的互聯網連接,當重新啟動我的應用程序時,我的連接丟失了,這就是為什么它會給出這個錯誤......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM