javascript - 变量在 Node 函数内变为未定义

标签 javascript node.js

我是 Node 新手,在使用一个简单的函数时遇到了麻烦。本质上,该函数接受实体名称 (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 时变为未定义。

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

任何帮助将不胜感激。

最佳答案

你的意思是:

config.DATA_SERVER[ownerEntity]

因此

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

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

关于javascript - 变量在 Node 函数内变为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737135/

相关文章:

javascript - 带有 python 脚本的 Node.js 应用程序

node.js - 是否有有关如何通过 Lambda 连接到 AWS Aurora Serverless PostgreSQL 的 Node.js 示例

javascript - 通过 AWS IOT sdk javascript 配置 AWS IOT 设备

javascript - 没有 Node 的常规 Web 应用程序中的 Jade Lang

javascript - 如果类 ="X"禁用单击,jQuery

javascript - Jslint 意外的反斜杠

javascript - 填充背景颜色,然后叠加一个PNG

javascript - 将php数组值循环到html数据属性

javascript - 如何将图像实现到自动完成脚本中?

node.js - Google reCAPTCHA无法在Electron BrowserWindow中解决