2016-09-28 13 views
0

ノードを使い慣れておらず、単純な関数に問題があります。基本的に、この関数はエンティティ名(ownerEntity)を受け取り、そのエンティティのURLとポート番号を参照してGET要求を処理します。 TypeError: Cannot read property 'URL' of undefined変数がノード関数内で未定義になる

機能は次のとおりです。:

const config = require('./index.js'); 

module.exports = function dataServerUrl(ownerEntity) { 

    console.log(ownerEntity); 
    console.log(config.DATA_SERVER); 
    console.log(config.DATA_SERVER.ownerEntity); 

    const url = config.DATA_SERVER.ownerEntity.URL; 
    const port = config.DATA_SERVER.ownerEntity.PORT; 

    const urlParameter = url + ':' + port; 

    return urlParameter; 
}; 

検索がどのように見えるconfigというフォルダにエントリポイントindex.jsファイルを打つ関数を呼び出すときに

はしかし、それはエラーをスローします次のようになります。

module.exports = { 
    DATA_SERVER: { 
    1111: { 
     URL: process.env.SERVER_1_URL, 
     PORT: process.env.SERVER_1_PORT, 
    }, 
    2222: { 
     URL: process.env.SERVER_2_URL, 
     PORT: process.env.SERVER_2_PORT, 
    }, 
    3333: { 
     URL: process.env.SERVER_3_URL, 
     PORT: process.env.SERVER_3_PORT, 
    }, 
    }, 
}; 

テスト用に、コンソールログを3つ入れます。console.log私は、ownerEntity変数が最初に通過していること、DATA_SERVER引数が戻ってきたことがわかりますが、URLを検索すると何らかの形でownerEntityが未定義になることがわかります。

1111 
{ '1111': { URL: '0.0.0.0', PORT: '8080' }, 
    '2222': { URL: '192.168.99.100', PORT: '8080' }, 
    '3333': { URL: '192.168.99.100', PORT: '8081' } } 
undefined 

ご協力いただければ幸いです。

+0

'config.DATA_SERVER [ownerEntity] .URL'を使用してください – Derek

+0

ありがとう@Derekそれを修正しました! – slowtokyo

答えて

1

もしかして:(変数やなどで提供されるもののような)ダイナミックプロパティ名用

config.DATA_SERVER[ownerEntity] 

ので、

const url = config.DATA_SERVER[ownerEntity].URL; 
const port = config.DATA_SERVER[ownerEntity].PORT; 

使用ブラケット表記を。

+0

ジョセフありがとう! – slowtokyo

関連する問題