2013-12-12 12 views
19

私はまだノードJSとjavascriptを学習しており、アプリケーションを持っています。ノードJS戻りホスト名

window.location.hostname 

しかし、それは動作しませんでした:私は私のようなものを試してみましたUbuntuの12.04

に上のサーバのホスト名を取得する必要があり、構成ファイルを持っています。以下のサンプルコード:

exports.config = { 
    app_name : [ window.location.hostname ] 
} 

私は、文字列を使用している場合は、それがうまくロードされますが、これはGitHubのを介して管理することになるだろうとするとき、アプリケーションのロード区別する必要があります。ドメイン名(FQDN)なし - 唯一のホスト名があること、しかし

var os = require("os"); 
var hostname = os.hostname(); 

+2

@Quentinありませんが、1つは、少なくともその答えは、HTTPリクエストヘッダ内のホストについてです本当に、タイトルは誤解を招く。 –

+1

試してみてくださいhttp://davidcaylor.com/2012/05/24/finding-the-hostname-in-node-js/ –

答えて

39

to the node.js documentation for the "os" moduleよると、あなたはhostname()機能を持つ「OS」モジュールをロードする必要があります。 FQDNを取得する簡単な方法はありません。 the node.js DNS functionsを使用して、サーバーのIPアドレス(上記のdocリンクを参照してください。os.networkInterfaces()となります)を名前に変換できます。唯一の問題は、サーバーのインターフェースと名前が異なる可能性があるため、どのサーバーを使用するかを決定する必要があります。

windowオブジェクトを使用しようとしましたが、ブラウザのJavaScriptランタイム環境にのみ存在します。サーバー側のJavaScriptには明らかにウィンドウがありませんので、windowオブジェクトはありません。 See this question: "Does node.js have equivalent to window object in browser"

あなたの質問はちょっと変わっています。ブラウザでは、window.location.hostnameは、現在のページが読み込まれたURLのホスト部分です。それをどのようにサーバーコンテキストに変換しますか? node.jsで実行するコードは、まさにそのサーバーからのものであり、実際にはこの情報は必要ありません。その情報は可変であり、マッシュアップ(さまざまなソースからのJSコード)を実行すると、コードが実行されているページがどこからロードされたのかわからない場合があります。サーバー上では、ローカルファイルシステムであることが常にわかります。

ところで、あなたは常にホスト名としてlocalhostを使用することができますが:)

+0

私は明らかにすべきです。私はこの名前が、リモートのソースにデータを送信するために必要で、どのサーバから来るのかを区別する必要があります。 linuxで 'hostname'コマンドを実行すると、サーバ名が返されます。私はこの名前を私の設定に渡して、データを送信するときに、それを実行するサーバのグループによって整理できるようにします。 – nocode

+1

@nocode上記で説明したように 'os.hostname()'を使用すると、コマンドラインコマンド 'hostname'と同じようにホスト名を取得するので、何も明確にしていません。 HTTP接続でリモートホストが必要な場合、あなたの質問は「重複している」と表示されていて、すべての「ホスト名」は完全に間違っています!基本的に、IN TEH SAME SENTENCE(!!!)と言っているのは、ローカルホスト名が必要であり、リモートホスト名は必要ないということです。あなたの心を作ってください:) –

+0

あなたは理解していません。アプリケーションは、ローカルホスト名と他のサーバーの統計情報をデータとしてリモートソースに送信しています。私の環境に10台のサーバーがあるとしましょう。これらの10台のサーバーはリモートのデータソースにデータを送信するので、10台のサーバーのホスト名を定義して区別する必要があります。これを手作業で書くことができますが、これを自動にする必要があります。これは、ブラウザからデータを取得することとは関係ありません。 – nocode

1

あなたはいくつかの有用なフィールド返すprocess.envを使用することができます

console.log(process.env.host); 
0

を使用することができます。

  • USERDOMAINを
  • ユーザー名
  • シストemDrive
  • ENV
  • APPDATA
  • NODE_PATH
  • OS

などがはるかに。

そして、例えば、あなたが使用することができます。

console.log(process.env.OS); 

戻りますどの:

Windows_NT 
関連する問題