web-dev-qa-db-ja.com

node.jsエラーメッセージevents.js:183 throw er; //未処理の「エラー」イベント

Microsoftのボットフレームワークをいじって、ボットのメインファイルであるapp.jsファイルを実行しようとすると、ボットエミュレーターとすべてのプログラムを閉じて再度app.jsを実行した後、初めてで問題ありません。このエラーメッセージが飛び出します

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3978
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1351:14)
    at listenInCluster (net.js:1392:12)
    at Server.listen (net.js:1476:7)
    at Server.listen (C:\Users\yu\Documents\GitHub\BotBuilder-
Samples\Node\cards-AdaptiveCards\node_modules\restify\lib\server.js:404:32)
    at Object.<anonymous> (C:\Users\yu\Documents\GitHub\BotBuilder-
Samples\Node\cards-AdaptiveCards\app.js:10:8)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)

私はこれに対するいくつかの解決策を見つけました、jsファイルを2回目に実行したときにポート3978が取得されたようです。cmdを使用して、そのポートを使用しているタスクを見つけ、タスクを強制終了する必要があります。

C:\>netstat -aon|findstr 3978

これは移植版ですが、すでにすべてのプログラムを閉じています

TCP    0.0.0.0:3978           0.0.0.0:0              LISTENING       13140
TCP    [::]:3978              [::]:0                 LISTENING       13140

実際にはnode.exe自体であり、バックグラウンドで実行されています

C:\Users\yu>tasklist|findstr 13140
node.exe                     13140 Console                    1     42,064 K

そして私はそれを殺す必要があります

C:\Users\yu>taskkill /f /t /im node.exe

ファイルを2回以上実行したいときに常にこれを繰り返すとは限らない方法はありますか?それは今日配線され始めただけです。つまり、すべての異なるapp.jsファイルについて、公式のサンプルコードを含めます。過去1か月間、すべてが順調でした、IDE私が使用しているのは崇高なテキスト3、node.jsバージョンは8.9.4 ltsです

6
yu zhou

これは非常に一般的な問題であり、以下のいずれかの方法で簡単に修正できます。

  1. ポートを使用しているプロセスを閉じてみてください。

    netstat -tulnp | grep <port_number>

  2. 以下のパッケージをインストールすることで、永久に修正されました。

    npm install [email protected] --save-dev --save-exact

  3. 端末で次のコマンドを実行します。

    echo fs.inotify.max_user_watches=524288 | Sudo tee -a /etc/sysctl.conf && Sudo sysctl -p

    Arch Linuxの場合、この行を/etc/sysctl.d/99-sysctl.confに追加します:

    fs.inotify.max_user_watches=524288

    次に実行します:

    sysctl --system

    これは再起動後も持続します。

    https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details

どちらのソリューションでも機能します。そうでない場合は、システムを再起動して、もう一度確認してください。

14
Natesh bhat

macを使用している場合、同じポートで何も実行されていないことを確認するには、次のようにします。

killall node

アプリを再起動します。

2
Alireza

待機中のポートは、すでに別のプロセスによって待機されています。

このエラーに直面したとき、Windows PowerShellを使用してプロセスを強制終了しました(Windowsを使用したため)。

  1. windows PowerShellを開く
  2. psと入力すると、プロセスのリストを取得できます
  3. nodeという名前のプロセスを見つけ、Idに注意してください
  4. タイプStop-process <Id>

Windowsユーザーにとっては助けになると思います。

1
Anush

Node.jsアプリケーションを実行する前に、別のポートを指定してみてください。

たとえば、ポート3978に衝突がある場合は、server.jsを起動する前に別のポートを設定します。

export PORT=3979

1
Allan Jiang

私も同じ問題が発生し、多くの方法を試しましたが、最終的にこれを取得しました、これはうまくいきます

npm install [email protected] --save-dev --save-exact

詳細については、このリンクを参照してください https://github.com/ionic-team/ionic-cli/issues/2922

1
Janith Udara

ノードサーバーの実行中にもエラーが発生しました。つまり、events.js:183スローer; //未処理の「エラー」イベント^私の場合、インストール中にMysqlポート番号3306を3307に変更したため、エラーが発生しました。 Mysqlのポート番号を3306に変更することで、このエラーから回復しました。

これは、すでに使用していたプロジェクトを閉じずに別のプロジェクトを開いたときに発生します。プロジェクトの使用を終了するときは、必ずCtrl + cを使用してください。 PCを再起動してみてください。再起動するはずです。少なくともそれが私にとってはうまくいった。

私も同じ問題に直面しました。 npm install [email protected] --save-dev --save-exactのインストールはこれを修正しませんでした。後で、IIS JS Expressサーバー用に構成したのと同じポートにNodeによってホストされている別のWebサイトがあることを知りました。 IIS Webサイトを停止すると、この問題を回避できます。

0
Jeyanth

ポートを使用しているプロセスを見つけて、強制終了します。

サーバーポートが8000であると仮定します。

1)C:> netstat -aon | findstr 8000

このコマンドは、プロセスID(PID)を返します。

2)C:> taskkill/F/PID 7848

このコマンドは、PIDによってプロセスを強制終了します。

enter image description here

0
Davijr