web-dev-qa-db-ja.com

Windowsの80ポートでnode.jsWebアプリを実行します

ローカルのnode.jswebappにリッスンさせる必要があります8ポート。アプリをポート80で実行すると、このエラーが発生します

events.js:72
        throw er; // Unhandled 'error' event
          ^
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1127:5)
    at Object.<anonymous> (\scripts\server.js:23: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) 

4321ポートでアプリを実行すると、このエラーは再現されないため、ポートによって異なります。

Windows7のポート80でアプリを実行できるようにするにはどうすればよいですか

17
silent_coder

Windowsマシンでは、おそらく80ポートがIISサーバーでビジー状態です。最初にiisを停止してから、node.js webappをポート80で実行してください。

17
Ph0en1x

80ポートのIISは間違いなく問題です。そして、それを変える代わりに、IISノードを試すことができます。 http://www.hanselman.com/blog/InstallingAndRunningNodejsApplicationsWithinIISOnWindowsAreYouMad.aspx おそらくポートは必要ありませんローカル開発では80ですが、Windowsマシンで本番環境に移行する場合IIS Nodeは負荷分散に適した選択肢です。

4
Serhii Kuts

ため息-SKYPE.EXEがポート80と443に潜んでいることがわかりました。netstat -anbを使用して、node.exeがそれらのポートのソケットを受け入れないようにブロックしているものを確認してください...

1
Jimme

@jimmeのように、私の問題は、同じ開発マシンで別のプロジェクトをテストするためにskypeクライアントをインストールしたためです。

私の場合、}).listen(80);はできましたが、}).listen(80, "0.0.0.0");はできませんでした。サーバーはローカルホスト以外からは到達できませんでした。 netstat -abnそのポートで何かがリッスンしていることがわかりましたが、プロセス情報がありませんでした。 「Windowsは、ディスパッチメカニズムをポート80にバインドせずに、何かが積極的に要求するまで、このような柔軟性のないサービスに対応しようとします(これが、最初は必ずしも問題が発生するわけではありませんが、この問題が発生する可能性がある理由です)。ある種の更新または構成の変更後。)」、 https://serverfault.com/questions/65717/port-80-is-being-used-by-system-pid-4-what-is -that 記事を指しました https://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/

その重要な情報と@jimmeの回答を見たとき、私はSkypeもインストールしたことを思い出しました。私はスカイプを起動時に開始しないようにしただけで良かった。

0
Rich Hildred

Windows 10 PCでもこの問題が発生しました。

このリンクのコマンドに従いました(net stop http): https://stackoverflow.com/a/162433 管理者として開いて次の出力を取得したコマンドプロンプトで:

C:\Users\<user>\Documents\project>net stop http 

The following services are dependent on the HTTP Service service. Stopping the HTTP Service service will also stop these services.

 World Wide Web Publishing Service    
 SSDP Discovery    
 Print Spooler    
 Function Discovery Provider Host

Do you want to continue this operation? (Y/N) [N]: y 

The World Wide Web Publishing Service service is stopping. 
The World Wide Web Publishing Service service was stopped successfully.

The SSDP Discovery service is stopping. 
The SSDP Discovery service was stopped successfully.

The Print Spooler service is stopping. 
The Print Spooler service was stopped successfully.

The Function Discovery Provider Host service is stopping. 
The Function Discovery Provider Host service was stopped successfully.

The HTTP Service service was stopped successfully.

C:\Users\<user>\Documents\project>

それから私はnpm startもう一度、管理者として実行していない別のコマンドプロンプトで、このエラーダイアログを表示します

enter image description here

[ok]をクリックして閉じ、ブラウザにlocalhostと入力すると、アプリが起動しました。

奇妙なことに、TaskManager-> Servicesタブに戻り、停止した4つのサービスすべてを再起動しました。以下のスクリーンショットでは、以前は停止されていたが([説明]列を参照)、現在は再起動されているサービスの1つを確認できます。

enter image description here

しかし、今私がnpm startノードアプリはまだ起動します。

そのため、これらのサービスを停止する前にアプリを起動できなかったのは、私には少し奇妙に思えます。それらを停止した後、アプリを起動できるようになりました。ただし、これらのサービスを再起動した後でも、アプリを起動できます。

0
CAM_344