Node.js使用sp-download包从SharePoint下载文件时遇身份验证类解析错误
报错解决方案
Error while resolving authentication class 报错的核心原因是 sp-download 无法识别传入的认证上下文格式,或者依赖包版本不兼容,按以下步骤修复即可:
1. 匹配依赖版本
先卸载现有版本,安装经过兼容性验证的版本组合:
npm uninstall sp-download node-sp-auth npm install sp-download@3.0.2 node-sp-auth@3.0.7
高版本node-sp-auth调整了认证返回结构,和老版本sp-download不兼容是出现该报错的最常见诱因。
2. 修正代码传入参数
sp-download的构造函数需要接收getAuth返回结果中的authOptions字段,不能直接传入完整的返回对象,修正后的代码如下:
const spauth = require('node-sp-auth'); const Download = require('sp-download').Download; async function downloadSharePointFile() { let authResult = await spauth.getAuth(CONFIG.SHAREPOINT.SITES_LINK, { username: CONFIG.SHAREPOINT.CREDS.USERNAME, password: CONFIG.SHAREPOINT.CREDS.PASSWORD }); // 此处传入authOptions字段而非完整authResult const download = new Download(authResult.authOptions); const filePathToDownload = CONFIG.SHAREPOINT.SITES_LINK + 'sharePoint文件路径'; const saveToPath = '本地存储路径'; try { await download.downloadFile(filePathToDownload, saveToPath); return true; } catch (error) { console.log("下载报错", error); return false; } }
3. 可选校验项
- 确认
CONFIG.SHAREPOINT.SITES_LINK末尾不要带多余斜杠,正确格式为https://xxx.sharepoint.com/sites/站点名 - 确认用户名是完整的邮箱格式,若账号开启了多因素认证,需要先在账号后台生成应用密码替代普通登录密码使用
- 确认要下载的SharePoint文件路径拼接正确,没有拼写错误
内容的提问来源于stack exchange,提问作者Rahul Singla
相关产品推荐
相关产品推荐

