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.listen(5010,function(){
console.log("server is running on port 5010");
});
// добавляем приведенный выше код для решения этой проблемы
[nodemon] чистый выход - ожидание изменений перед перезапуском?
Ответ: Проверьте подключение к Интернету. При перезапуске моего приложения мое соединение теряется, поэтому оно выдает эту ошибку...