Node.js throws er Событие с необработанной ошибкой

Я установил node, npm на моем сервере Centos 6, и я использую putty для запуска команд на сервере.

Node установлен правильно в корневом каталоге и работает отлично в любом месте сервера.

мой проект находится в /home/shaadise/public _html/Ikon

Я создал файл hello.js file/home/shaadise/public_html/Ikon

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8080);

console.log('Server started');

во время работы js:

[email protected] [/home/shaadise/public_html/Ikon]# node hello.js
Server started

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EADDRINUSE
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1042:14)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)
    at Object.<anonymous> (/home/shaadise/public_html/Ikon/hello.js:6:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
[email protected] [/home/shaadise/public_html/Ikon]#  throw er; // Unhandled 'error' event
-bash: throw: command not found
-bash: //: is a directory

Вопрос: , где я должен поместить файл node js и как я могу его получить????

i проверено на выполнение команды:

[email protected] [/home/shaadise/public_html/Ikon]# netstat -plnt | grep ':8080'
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      27111/nginx

Ответы

Ответ 1

Этот Error: listen EADDRINUSE категорически означает, что либо у вас, либо у демона выполняется другое приложение на 8080.

Однако, чтобы проверить, попробуйте запустить другой порт?

-edit -, так как у него появилось довольно много оборотов, я подумал, что добавлю в него немного дополнительного отладки.

Практически все node.js tutorials по умолчанию для порта 8080 для запуска. Это связано с тем, что он похож на порт 80 по умолчанию, используемый другими веб-службами, такими как Apache или NGinX.

Чтобы определить, работает ли другое приложение на одном и том же порту, вы можете использовать netstat -a для просмотра всех активных подключений и их портов, а затем grep этот список, чтобы найти любой процесс, подключенный к тому же порту, что и ваш node.js.

На самом деле не имеет значения, на каком порте работает ваше приложение Node, пока это свободный порт. В конечном счете, при развертывании в производство вы должны синхронизировать любой сервер контента, который вы используете (Apache/NGinX), чтобы использовать тот же порт.

Ответ 2

Если вы используете систему на базе Linux, сначала вам нужно перечислить все программы, которые используют этот конкретный порт, и убить их (что означает их остановить).

Пример: я хочу перечислить все программы, которые используют порт 3000

fuser 3000/tcp 

затем выберите идентификатор процесса, который находится в правой части полученной строки текста и выдает команду kill

Пример: если есть идентификатор процесса со значением 2345, тогда команда будет

kill 2345

Ответ 3

Общей ситуацией для получения этой ошибки является то, что вы делаете следующее:

  • startup что-то
  • используйте Ctrl + z и поместите его в фоновый рисунок
  • попробуйте снова запустить что-то

Хорошим способом всегда будет ударить Ctrl + c, который отправит сигнал в приложение (которое может решить закрыть). Вы можете прочитать больше об этом здесь: В чем разница между Ctrl-z и Ctrl-c в оболочке?

Ответ 4

Сервер работает в фоновом режиме; это происходит, как правило, когда вы не убиваете процесс. Чтобы решить эту проблему, вы можете установить терминал:

ps | grep 'node'

Этот код покажет вам процесс с определенным номером, используйте следующий код, чтобы убить процесс:

kill -9 "конкретный номер"

Вы можете использовать sudo, если это не работает.