Nodemon - "чистый выход - ожидание изменений перед перезапуском" во время установки

Я пытаюсь настроить RESTful API с Node и Postgres. Я столкнулся с проблемой, когда всякий раз, когда я пытаюсь запустить сервер (используя npm start) для локального тестирования, я получаю следующий вывод:

[nodemon] 1.14.10 [nodemon], чтобы перезапустить в любое время, введите rs [nodemon] смотрит: [nodemon] запуск node index.js server.js [nodemon] clean exit - ожидание изменений перед перезапуском

После продолжительного поиска в Интернете я не могу найти слишком много ресурсов о том, что именно означает "чистый выход - ожидание изменений перед перезапуском", особенно в этом случае.

Это мой файл query.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;

Есть мысли о том, что здесь может происходить? Заранее спасибо.

16 ответов

Решение

Есть несколько вещей не так с вашим кодом. Вы никогда не говорили своему приложению работать. Когда вы будете готовы создавать свои маршруты, вы должны запустить свой сервер с:

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

Также у вас есть приложение Express и роутер в одном файле. Маршрутизатор следует использовать только как субмодуль (удобно, когда вы хотите разделить свое приложение на несколько файлов). Прямо сейчас вы ничего не делаете с этим. Если вы удалите маршрутизатор и экспорт, то он должен работать нормально.

Решение 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 на index.js, т.е. {..., "main": " index.js ",...}. Это решит вашу проблему.

Мне также интересно об этом заявлении, зарегистрированном nodemon. Я испытал это только в последние дни просмотра. Я получаю эту ошибку, если какая-то синтаксическая ошибка существует в моем коде экспресс-сервера. Когда я запускаю сервер через

> node server

сервер не запускается и даже ничего не записывает в консоль. Странное поведение я думаю. Кажется, что это сообщение не имеет ничего общего с nodemon. Я никогда не испытывал такой вещи с узлом в прошлом. Каждый раз, когда была введена синтаксическая ошибка, я получал сообщение об ошибке с трассировкой стека, выводимой на консоль.

Как я уже говорил, это была просто синтаксическая ошибка: в блоке.then отсутствовала закрывающая скобка.

В конце концов, я не знаю, почему узел не печатал трассировку стека, как я испытывал это раньше.

Я исследую далее, но одна вещь, которую можно извлечь из ошибок такого рода, - это, вероятно, использовать линтер для написания кода JavaScript или пойти дальше и использовать TypeScript. Я использую TypeScript для разработки клиента с Angular, и возможности раннего обнаружения синтаксических ошибок велики.

Если у кого-то все еще есть проблемы с этим, как я решил, мое было то, что я обнаружил, что моя база данных не подключена, я использую mongodb для своей настройки, поэтому настраиваю mongo с помощью команды mongod и снова запускаю сервер с помощью приложения node app.js или nodemon Исправлена ​​моя.js

У меня была аналогичная проблема после возвращения к одному приложению Node (основной файл: app.js) после работы над другим приложением Node (основной файл: index.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 в качестве основного скрипта и использует приложение в качестве объекта в этом файле), каким-то образом сохранялись и на них ссылались.

Есть ли здесь опытные люди по Nodemon, чтобы это объяснить?

У меня тоже была такая же проблема.

Версия узла была 14.15.5.

Итак, установлен узел версии 12.22 и работает нормально.

Столкнувшись с той же проблемой, я просто удалил папку node_modules и файл package-lock.json и переустановил зависимости, и это сработало.

У меня была такая же проблема, но моя проблема была очень простой проблемой для новичков - добавить ее сюда на случай, если новые для выражения и этот тип кода сделают ту же ошибку

Я неосознанно включил «app.listen» в свой код «app.get» (да, я знаю, очень простая ошибка, но это расстраивало, поэтому я дал свой вариант здесь)

Неправильный способ

      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");
});

После многих часов поиска решения, почему моя производственная сборка узла в докере всегда немедленно останавливается с выходом 0, я обнаружил, что версия узла образов докеров несовместима. Если вы столкнулись с этой проблемой в докере, попробуйте разные версии node

Несколько дней назад я столкнулся с той же проблемой, я не нашел здесь ошибок в коде. Вам нужно только запустить код в папке, в которой вы установили nodemon.

и ваша программа покажет ошибку в браузере, который отказался подключиться, чем попробуйте этот код на терминале, если вы используете экспресс-генератор

запуск npm или запуск nodemon

[узел] запуск node index.jsНеверный формат URI [nodemon] чистый выход - ожидание изменений перед перезапуском

Я смог исправить это, изменив символ «@» в моем пароле для URL-адреса подключения на %40.

Это 2022 год, поэтому, если у кого-то все еще есть эта ошибка, вот исправление, которое сработало для меня. Убедитесь, что ваша команда «start» в «scripts» package.json указывает на ваш входной файл для приложения.

      `
 "scripts": {

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

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

 "postinstall": "tsc"
}

`

Вы вызывали старт? Для меня это была проблема в app.js.

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

// добавляем приведенный выше код для решения этой проблемы

[nodemon] чистый выход - ожидание изменений перед перезапуском?

Ответ: Проверьте подключение к Интернету. При перезапуске моего приложения мое соединение теряется, поэтому оно выдает эту ошибку...

Другие вопросы по тегам