SharePoint 2019列表人员选择器无法正常工作问题
问题场景
从SharePoint 2013升级到2019的站点中,列表的人员选择器无法提供自动填充建议,也无法解析任何用户,浏览器控制台抛出如下错误:
Uncaught TypeError: a.set_allowOnlyEmailAddresses is not a function at SPClientPeoplePicker.GetPeoplePickerQueryParameters (clientpeoplepicker.js?rev=xQZCUuvNj423eygeQ6yOJg%3D%3DTAG0:1:6764) at SPClientPeoplePicker.AddPickerSearchQuery (clientpeoplepicker.js?rev=xQZCUuvNj423eygeQ6yOJg%3D%3DTAG0:1:5873) at SPClientAutoFill.SPClientPeoplePicker_CallbackPopulateAutoFillFromEditor [as FuncPopulateAutoFill] (clientpeoplepicker.js?rev=xQZCUuvNj423eygeQ6yOJg%3D%3DTAG0:1:37590) at autofill.js?rev=hRHNkHTVTVhEvdynOszVNg%3D%3DTAG0:1:10528 at arguments.<anonymous> (init.js?rev=9Z%2F3O15LXnsLkPxBBsfQFg%3D%3DTAG0:1:100002)
解决方案
1. 重置站点脚本依赖(优先尝试)
错误根源是SP2019的clientpeoplepicker.js调用了SP2013中不存在的方法,大概率是升级后站点脚本引用未正确更新。用PowerShell重置:
$siteUrl = "http://你的站点URL" $site = Get-SPSite $siteUrl $site.RebuildScriptLink() $site.Update()
执行后清除浏览器缓存,必要时重启IIS。
2. 校验人员选择器服务配置
在管理中心检查Web应用的人员选择器关联:
- 进入应用程序管理 > 管理Web应用程序,选中目标Web应用
- 点击用户配置文件服务应用设置 > 配置人员选择器
- 确认已正确关联User Profile Service应用,用户解析的权限和范围设置无误
3. 切换站点兼容性模式
升级后站点可能保留SP2013兼容性设置,切换到2019模式:
- 进入站点设置 > 网站集管理 > 网站集功能
- 激活SharePoint Server 2019 网站集功能,停用SP2013相关旧特性
- 重新编辑列表的人员列,确认配置(如允许多选)后保存刷新测试
4. 临时注入缺失方法(Workaround)
如果上述方法无效,在站点母版页中添加以下脚本补全缺失方法:
SP.SOD.executeFunc('clientpeoplepicker.js', 'SPClientPeoplePicker', function() { if (!SPClientPeoplePicker.prototype.set_allowOnlyEmailAddresses) { SPClientPeoplePicker.prototype.set_allowOnlyEmailAddresses = function(value) { this._allowOnlyEmailAddresses = value; }; SPClientPeoplePicker.prototype.get_allowOnlyEmailAddresses = function() { return this._allowOnlyEmailAddresses || false; }; } });
该脚本会在人员选择器加载时补全缺失的方法,避免报错导致功能失效。
内容的提问来源于stack exchange,提问作者Shafeeq
相关产品推荐
相关产品推荐

