Node.js 如何获取红色节点中的基本url?

Node.js 如何获取红色节点中的基本url?,node.js,node-red,Node.js,Node Red,我试图将一个JSON公开为一个POST请求,其中我试图用另一个值附加基本url 如何获取基本url值 我尝试使用: var root = RED.settings.httpNodeRoot; 但是它只返回了/,正如我所期待的那样,这里有http://localhost:1880 是否可以使用任何节点红色api获取基本url?任何帮助都将不胜感激。它不是直接提供的,但您可以使用一些可用的零件进行组装 请查看中的subscribe函数 基本上,您可以从RED.settings对象获取端口和路径,

我试图将一个
JSON
公开为一个
POST
请求,其中我试图用另一个值附加基本url

如何获取基本url值

我尝试使用:

 var root = RED.settings.httpNodeRoot;
但是它只返回了/,正如我所期待的那样,这里有
http://localhost:1880


是否可以使用任何节点红色api获取基本url?任何帮助都将不胜感激。

它不是直接提供的,但您可以使用一些可用的零件进行组装

请查看中的subscribe函数

基本上,您可以从RED.settings对象获取端口和路径,但IP地址在很大程度上取决于您运行的机器。默认情况下,节点RED绑定到0.0.0.0(这是所有可用IP地址的缩写)

如果您在比0.12.x更新的NodeJ上运行,那么您可以获得默认路由的IP地址,这通常是一个公平的猜测。对于nodejs0.10.x,您几乎只需猜测

var ipAddr;
//device.ip
var interfaces = os.networkInterfaces();
var interfaceNames = Object.keys(interfaces);
for (var name in interfaceNames) {
  if (interfaceNames.hasOwnProperty(name)) {
    var addrs = interfaces[interfaceNames[name]];
    for (var add in addrs) {
      if (addrs[add].netmask) {
        //node 0.12 or better
        if (!addrs[add].internal && addrs[add].family == 'IPv4') {
          if (ip.isEqual(ip.mask(addrs[add].address,addrs[add].netmask),ip.mask(device.ip,addrs[add].netmask))) {
            ipAddr = addrs[add].address;
            break;
          }
        }
      } else {
        //node 0.10 not great but best we can do
        if (!addrs[add].internal && addrs[add].family == 'IPv4') {
          ipAddr = addrs[add].address;
          break;
        }
      }
    }
    if (ipAddr) {
      break;
    }
  }
}

var callback_url = 'http://' + ipAddr + ':' + settings.uiPort;
if (settings.httpAdminRoot) {
  callback_url += settings.httpAdminRoot;
}

查看此代码提醒我,如果启用了HTTPS,我必须添加一个修复…

感谢您的快速响应@hardillb。我没有在任何地方明确启用https。我想我也必须在我的设置中这样做?实际上,再仔细考虑一下,在大多数情况下,如果启用了https,它将无法工作,因为WeMo设备将不信任自签名证书