2016-09-19 16 views
2

OpenShiftでnodejsサーバーを開発しましたが、現在、新しいプロジェクトのためにHerokuで同じ種類のサーバーを作成しようとしています。ここでエラーEADDRNOTAVAILとHeroku nodejsサーバー

は私のサーバーの最小限のコードです:私のOpenShiftサーバと

var http = require('http'); 
var port = process.env.PORT || 8080; 
var address = process.env.IP || '127.0.0.1'; 

console.log(address); 
console.log(port); 

var server = http.createServer(function(req, res) 
{ 
    res.writeHead(200, { 'Content-Type': 'text/html', 'Access-Control-Allow-Origin': '*' }); 
    res.write(JSON.stringify({ valid: true })); 
    res.end(); 
}); 

server.listen(port, address); 

違いです:

  • プロセスによる変数process.env.OPENSHIFT_NODEJS_PORT、process.env.OPENSHIFT_NODEJS_IPの交換.env.PORTとprocess.env.IP。
  • 私は、このコマンドラインでIP変数を設定します。私は私のサーバーを起動することはできません、それは常にクラッシュし、私は、なぜ私のサーバーのログを理解していないIP = MYSERVERADDRESS.com

を設定します。Herokuの設定以下のとおりです。

MYSERVERADDRESS.com 
41184 
events.js:154 
     throw er; // Unhandled 'error' event 
^
Error: listen EADDRNOTAVAIL MYSERVERIP:41184 
    at Object.exports._errnoException (util.js:893:11) 
    at exports._exceptionWithHostPort (util.js:916:20) 
    at Server.__dirname.Server.Server._listen2 (net.js:1233:19) 
    at net.js:1391:9 
    at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16) 
    at listen (net.js:1282:10) 
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10) 

答えて

4

私の推測では、あなたのHerokuのサーバは、その(内部)IP-数としてあなたの(外部の)サーバーのアドレスを持っていないということでしょう(外部IPアドレスは、最も可能性の高いHerokuのネットワークスタックの以前のバージョンを終了します)これはあなたが明示的にそれを聞くことができないことを意味します(これは基本的にはEADDRNOTAVAILの意味です)。

は代わりに、全く耳を傾けるためにアドレスを使用しないでください。

server.listen(port); 
+0

ああ、サンプルアプリが動作するように得ることの喜びを.... – eflat

関連する問題