变量在节点函数内变为未定义

时间:2016-09-28 02:35:06

标签: javascript node.js

我是节点新手并且遇到一个简单的功能问题。本质上,该函数接受实体名称(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;
};

查找命中了名为index.js的文件夹中的入口点config文件,如下所示:

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,
    },
  },
};

为了测试,我放入了三个控制台日志。console.log返回以下内容,因此我可以看到ownerEntity变量最初通过,DATA_SERVER参数返回,但不知何故ownerEntity查找URL时,1}}变为未定义。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你的意思是:

config.DATA_SERVER[ownerEntity]

因此

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

对动态属性名称使用括号表示法(如变量等提供的那些)。