Ответ 1
Я тоже столкнулся с этой проблемой, и я решил это:
Не используйте npm start
для запуска своего веб-приложения
Используйте node app.js
вместо
Я следил за этим (http://socket.io/get-started/chat/) учебником о том, как сделать простое приложение чата с помощью socket.io.
Я попытался использовать Express для его создания, и мне было интересно, почему порт 3000 уже используется? Код ниже не будет работать, если я не изменю номер порта.
/* Make the http server listen on port 3000. */
http.listen(3000, function(){
console.log('listening on *:3000');
});
Является ли использование порта для выполнения других действий, таких как маршрутизация или что-то еще? Есть ли простой способ найти, что происходит на этом порту?
Я также могу делать что-то хитрое с моими требованиями:
var express = require('express');
var app = require('express')();
var http = require('http').Server(app);
var router = express.Router();
var io = require('socket.io')(http);
Спасибо.
Я тоже столкнулся с этой проблемой, и я решил это:
Не используйте npm start
для запуска своего веб-приложения
Используйте node app.js
вместо
Попробуйте запустить:
netstat -anp tcp | grep 3000
Это должно показать вам имя процесса, использующего порт 3000. Здесь другая проблема в StackOverflow, которая охватывает эту проблему более подробно.
Один из лучших способов сделать это во время разработки - через IDE, где вы сможете выполнить всестороннюю отладку и выполнить код.
Если вы используете WebStorm, это работает.
Из конфигураций запуска → Изменить конфигурации → Nods.js и добавьте app.js
в качестве параметра node. Более подробную информацию см. Ниже в скриншотах.
Я решил эту же проблему с помощью экспресс-приложения:
найдите строку:
var port = normalizePort (process.env.PORT || '3000');
замените его на:
var port = normalizePort ('XXXX');
где XXXX - номер порта, который вы хотите использовать
Тогда вы можете сделать npm start! XD
У меня (забыл, что у меня был) ранее установленный ntop, который по умолчанию также использует порт 3000, и поэтому получил такая же ошибка, как описано здесь.
Как упоминалось выше, используйте netstat или lsof, чтобы найти службу-нарушитель (и префикс команды sudo, чтобы получить правильное имя процесса):
sudo lsof -P | grep ':3000'
- или -
sudo netstat -anp tcp | grep 3000
В Ubuntu служба отключена с помощью (просто):
service ntop stop
Как и ответ выше, чтобы не использовать npm start
.
Я использовал nodemon и с expressjs и expressjs-генератором. Я использовал nodemon для npm start
, в то время как npm начинает сам выполнять node./NodeApp/bin/www
Поэтому я редактировал, чтобы nodemon выполнял node./NodeApp/bin/www
сам по себе, и эта ошибка исчезла.
Заключение
До
package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node ./NodeApp/bin/www",
"build": "webpack --watch",
"dev": "nodemon --exec npm start"
},
После
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --watch",
"dev": "nodemon --exec node ./NodeApp/bin/www"
},
Итак, теперь я запускаю свой раздел с npm run dev
и больше ошибок.
для меня помогает использовать 3000 || 3333
3000 || 3333
, и он исправляет проблему