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, если это не работает.