【问题标题】:NodeJS - LDAPJS Error : events.js:160 throw er; // Unhandled 'error' eventNodeJS - LDAPJS 错误:events.js:160 throw er; // 未处理的“错误”事件
【发布时间】:2019-11-10 03:20:26
【问题描述】:

我是 nodejs 的新手,我在执行我的节点文件时遇到了这个问题。我在 centos 7 上。当我尝试使用 LDAPJS 连接到 LDAP 时。当 LDAP 可用时它工作正常,但是它无法连接到服务器,它显示这个奇怪的错误:

events.js:160 投掷者; // 未处理的“错误”事件 ^

错误:连接 EHOSTUNREACH 172.24.130.203:389 在 Object.exports._errnoException (util.js:1020:11) 在exports._exceptionWithHostPort (util.js:1043:20) 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1099:14)

我想捕捉这个错误并显示正确的错误消息。

我试过用这个:

 rm -rf node_modules && npm cache clean --force && npm install

但这并没有帮助。

我的 package.json 文件是:

{
  "name": "package",
  "version": "1.0.0",
  "description": "For LDAP ",
  "main": "index.js",
  "dependencies": {
    "ldap": "^0.7.1",
    "passport": "^0.4.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "node index.js"
  },
  "keywords": [
    "ldapjs"
  ],
  "author": "Rajan",
  "license": "ISC"
}

这是 index.js 文件:

var ldap = require('ldapjs');
var http = require('http');
var assert = require('assert');


var client = ldap.createClient({
    url: 'ldap://172.24.130.203/dc=india,dc=bizrtc,dc=com'
});

var basedn = "dc=test,dc=test,dc=test";

var opts = {
  filter: '(ipPhone=*)',
  scope: 'sub',
  attributes: ['ipPhone','mail','name','description']
};

client.bind('username', 'mysecret', function (err) {

client.search('dc=india,dc=bizrtc,dc=com', opts, function (err, search) {
    search.on('searchEntry', function (entry) {
      var user = entry.object;
      console.log("Users are " + user.ipPhone + "  Display Name is  " + user.name + " E-Mail is " + user.mail + " Password is  " + user.description);

    });

  });
});


client.unbind(function(err) {
  assert.ifError(err);
});

【问题讨论】:

  • 显示您的 LDAP 连接代码。错误显示Unhandled 'error' event,所以您需要做的就是:处理错误。清理模块缓存有什么帮助?您需要编写某种catch.on("error") 代码。
  • @ChrisG 我添加了有问题的代码
  • @ChrisG - 是的,但我不明白为什么它在某些events.js:160 throw er中显示错误@
  • 它继承自事件nodejs.org/api/events.html

标签: javascript node.js ldapjs


【解决方案1】:

看起来,客户端捕获了套接字错误并重新发出这些错误: Client - error

所以你应该没问题

client.on('error', err => { console.error(err) })

【讨论】:

  • 那仍然没有发现错误 - 我不知道为什么
  • 我试过了——对我来说,错误被捕获了。你在哪里调用client.on(...)? (请在您的来源中添加)。顺便说一句,您的 package.json 依赖于“ldap”,但您需要“ldapjs”。这些似乎是两个不同的包,尽管它们看起来或实际上是兼容的。我想知道你替换 node_modules 后你的 index.js 是如何运行的。
猜你喜欢
  • 2016-12-14
  • 2017-05-06
  • 2019-08-21
  • 2018-11-19
  • 2020-12-12
  • 2018-05-04
  • 2018-07-23
  • 2018-05-07
  • 2015-03-01
相关资源
最近更新 更多