You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Active Directory findUser函数报错:TypeError无法转换undefined/null为对象

ActiveDirectory findUser 报错排查思路

问题详情

业务代码

var ad = new ActiveDirectory(adConfig);
ad.authenticate(username, password, function (err, auth) {
    if (err) {
        console.error("ERROR : " + JSON.stringify(err));
        res.send(false);
        return;
    }
    if (auth) {
        console.log("User " + username.split('\\')[1] + " authenticated");
        ad.findUser(username.split('\\')[1], function (err, user) {
            //More code here
        }
    }
});

报错信息

activedirectory.js:416
delete result.controls; // Remove the controls array returned as part of the SearchEntry
^
TypeError: Cannot convert undefined or null to object

库中报错代码

function onSearchEntry(entry) {
    log.trace('onSearchEntry(%j)', entry);
    console.log('entry', entry);
    var result = entry.object;
    delete result.controls; // Remove the controls array returned as part of the SearchEntry
    ...
}

当前entry对象类型为SearchResultEntry [LdapMessage] {...},该对象不存在object属性,导致result为undefined,进而触发delete操作的类型错误。

排查思路

  • 检查LDAP返回条目结构:在onSearchEntry函数中打印完整的entry对象,确认AD服务器返回的搜索条目是否有其他存储用户数据的属性(比如entry.raw或其他字段),判断是否是库对返回结构的预期出现偏差。
  • 核对findUser参数格式:当前传入的是剥离域名后的纯用户名,部分AD环境要求查询用户时传入完整格式(如user@domain.com或DOMAIN\user),尝试传入完整用户名后观察返回结果是否正常。
  • 验证库版本兼容性:不同版本的activedirectory库对LDAP条目解析逻辑可能不同,查看当前版本的issue记录,或升级到最新稳定版,确认是否是已知版本bug。
  • 检查AD连接权限:确认用于连接AD的账号是否拥有读取目标用户信息的权限,权限不足可能导致返回的条目不完整,缺少预期的object属性。
  • 排查目标用户属性:确认AD中目标用户的属性是否完整,部分特殊账号(如内置管理员)的属性结构可能与普通用户不同,尝试查询其他普通用户看是否会出现相同问题。

内容的提问来源于stack exchange,提问作者IAyestaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:55:09