2015-11-23 3 views
1

Однажды, из ничего, мое приложение решило не умирать.Не удается убить приложение NodeJS

После нажатия кнопки ctrl + c, когда я проверяю порт, он все еще присутствует и не только на моей машине, но и на сервере, которым управляет PM2, поэтому мне нужно каждый раз идти туда и убивать процесс вручную. Я пытался искать проблемы в своем коде, и когда я не мог, я просто хочу, чтобы это просто одна из проблем с ошибками, и вскоре будет исправлено. Это было немного раздражающе, но я мог убить процесс с помощью kill -9 PID, и у меня было большинство задач, которые у меня были на лицевой стороне, поэтому это была не такая большая проблема. Сегодня более чем через неделю проблема все еще здесь. Я вернулся в историю, взял коммит, который я сделал несколько недель назад, где все работало отлично, переключился на NodeJS с 5.1.0 на 4.2.1, очистил кеш-нпм, переустановил все зависимости, и я все еще вижу проблему. Я использую LoopbackJS, но обычно я запускаю приложение просто с «node server/server.js», а затем описанная выше проблема происходит, но если я использую «slc run», а затем попытаюсь убить приложение ctrl + c он просто висит вечно, я имею в виду, что я могу нажимать ctrl + c столько раз, сколько хочу, и он все еще работает на консольном переднем плане.

Если вместо нажатия ctrl + c я убью вкладку в консоли, приложение без проблем исчезнет.

Это то, что я вижу, после запуска «Lsof -i TCP: 4000», когда приложение должно быть мертвым, но не

lsof -i tcp:4000

Edit: Запуск и убивает его с менеджером процесса Strongloop - slc start/slc stop работает нормально, но было бы удобнее использовать обычный способ запуска приложения NodeJS (node ​​server.js) во время разработки, и это не меняет того факта, что есть какая-то проблема, и было бы лучше не спрячьте его под ковром.

+0

Возникает ли проблема при использовании slc run? –

+0

Я редактировал вопрос. Когда я пытаюсь убить его, когда он запускался с «slc run», он просто зависает на переднем плане, и я могу нажимать столько ctrl + c, сколько мне нравится, но когда я запускаю его с узлом server/server.js, он остается в фоновом режиме –

+0

И возникает ли проблема, если вы закрываете ее, используя 'slc clusterctl stop'? или 'slc ctl stop' в новой версии? Я предполагаю, что это убивает контроллер кластера, но при этом он не работает. –

ответ

1

Из гнева я удалил свое приложение по самым элементарным элементам. Файл по файлу, по частям, и я нашел ответ. Преступник был фантом JS - https://github.com/sgentle/phantomjs-node. Версия PATCH 0.8.2 представила эту ошибку. Fix был создан почти месяц назад, объединился неделю назад, но еще не опубликован на npm.

Смежные вопросы