2017-02-13 3 views
1

このエラーについて他の質問を検索しましたが、解決策が見つかりませんでした。"アプリケーションがキャッチされていない例外をスローして終了しました。エラー:listen EACCES 0.0.0.0:80"

昨日はAzureのノード+エクスプレス+ Socket.IOウェブサイトを展開し、それが動作しません。私はエラーにこのコードで

Application has thrown an uncaught exception and is terminated: Error: listen EACCES 0.0.0.0:80 

を得る:

// more code ... 

var app = express(); 

var server = require('http').Server(app); 

var io = require('socket.io')(server); 

// right here 
server.listen(portNumber, function() { 
    console.log('Server listening at port %d', portNumber); 
}); 

// more code ... 

別のプロセスがすでにこのポートで待機しているかのように見えます...多分IISサーバー?よく分かりません。

+0

あなたのアプリケーションの環境変数(Azureポータルの設定)を設定しましたか? –

答えて

0

このエラーは、そのポートでリッスンする権限がないことを意味します。あなたは1024

以下のポートをリッスンするか、またはあなたが要求をプロキシリバースプロキシを実行することができますrootとして実行する必要があります

Error: listen EADDRINUSE 0.0.0.0:80 

:何か他のものは、すでにそのポートで聞いていた場合のように、あなたはエラーを取得する必要がありますポート80からアプリが聴いている上位のポートまで

+0

これは、AzureのWebアプリケーションではあまりにも複雑に聞こえます。誰もがこれを行う必要がありますか? –

0

rootユーザーとしてアプリケーションを実行してみてください。

sudo node app.js 
+0

しかしこれはWindows環境です。sudoはありません –

+0

ああ、私はそれを知らなかったので、あなたのportNumberとして 'process.env.port'を使うことをお勧めします。それを試して、あなたが得たものを教えてもらえますか? –

+0

'var portNumber = process.env.port; ' –

0

私はAzureのを知らないが、私はこのことを知っている:何かがポート80を聞くしようとしている、これは管理者のアクセス(Windowsの場合)/ sudoを許可(Ubuntuの)が必要です。 まず、設定を変更してください。ポート80は、コンピュータが外部から何かを聞くためのメインポートです。変更しないでください。 あなたのアプリケーションにadminアクセス権/ sudo権限を与えると、アプリケーションにエラーが発生した場合にシステム全体が停止します。これらの権限をアプリに与えないでください。 あなたは、ポート80に耳を傾け、別のポートに耳を傾け、そのポートにポート80からプロキシ

3

必要がある場合は、次のようにportNumberを設定する必要があります。

var portNumber = process.env.port || process.env.PORT || 1337 

Azureでは、変数process.env.PORTのポートを通過して、あなた実際にはポートではなく、\\\\.\\pipe\\2f95e604-fc02-4365-acfc-010a26242d02のようなパイプなので、それを使用しなければなりません。

+0

ありがとう!これは命を救う人でした! – thsorens

関連する問題