web-dev-qa-db-ja.com

node.jsは使用中のsocket.ioポート3000を表現します

Socket.ioを使用して簡単なチャットアプリケーションを作成する方法に関するチュートリアル( http://socket.io/get-started/chat/ )に従っています。

しかし、Expressを使用して作成しようとしましたが、なぜポート3000がすでに使用されているのか疑問に思っていました。以下のコードは、ポート番号を変更しない限り機能しません。

/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});

Expressは、ポートを使用してルーティングなどのその他のことを行いますか?そのポートで何が起こっているのかを見つける簡単な方法はありますか?

私は必要なもので何か危険なことをしているかもしれません:

var express = require('express');
var app = require('express')();
var http = require('http').Server(app);
var router = express.Router();
var io = require('socket.io')(http);

ありがとう。

13
himahimahima

私もこの問題に遭遇し、これで解決しました:

使ってはいけません npm start Webアプリを起動します

使用する node app.js代わりに

25
Ethan Li

実行してみてください:

netstat -anp tcp | grep 3000

これにより、ポート3000を使用しているプロセスの名前が表示されるはずです。StackOverflowの 別の問題 は、この問題をより詳細にカバーしています。

12
Brian Tovar

開発中にこれを行う最良の方法の1つは、IDEを使用することです。この場合、包括的なデバッグを行い、コードをステップ実行できます。

WebStormを使用している場合、これは機能します。実行構成->構成の編集-> Nods.jsから、app.jsをノードパラメーターとして追加します。詳細については、スクリーンショットの下の矢印を参照してください。

enter image description here

4
Gajen Sunthara

以前に ntop をインストールしていた(忘れていた)ため、デフォルトでポート3000も使用されるため、ここで説明したのと同じエラーが発生していました。

他の人が述べたように、netstatまたはlsofを使用して問題のあるサービスを見つけます(コマンドの前にSudoを付けて、正しいプロセス名を取得します)。

Sudo lsof -P | grep ':3000'

-または-

Sudo netstat -anp tcp | grep 3000

Ubuntuでは、サービスは(単純に)無効になっています。

service ntop stop
2
Dan0

npm startを使用しないという上記の回答に似ています。

Nodemonを使用し、expressjsとexpressjsジェネレーターを使用していました。 nodemonを使用してnpm startを実行していましたが、npm start自体は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で実行し、エラーはもうありません。

2
cjmling

これを行うエクスプレスアプリで同じ問題を解決しました。

  1. ファイル「yourap/bin/www」を編集します
  2. 行を見つけます:

    var port = normalizePort(process.env.PORT || '3000');

  3. 次のように置き換えます:

    var port = normalizePort( 'XXXX');

xXXXは使用するポート番号です

その後、自由にnpm start! xD

私はこれで解決しました:

npm install shelljs

リッスンポートを開始する前に、nodejsプロセスを強制終了するためのコードを追加します

var Shell = require('shelljs');
Shell.exec("pkill nodejs");
Shell.exec("pkill node");

/* Make the http server listen on port 3000. */
http.listen(3000, function(){
 console.log('listening on *:3000');
});
0
Utopia

私にとっては_3000 || 3333、そしてそれは問題を修正しています

0
chavy