使用sp-request从SharePoint获取文件详情返回ECONNREFUSED错误
问题根因
你的错误由两个核心逻辑问题导致,和@FileUrl参数写法无关:
sp-request初始化时未指定目标站点地址,导致请求被错误路由到本地127.0.0.1,触发连接拒绝错误- 异步执行逻辑顺序错误,文件校验请求还未完成就提前终止了Promise
修复方案
1. 修正sp-request初始化参数
调用sprequest.create时必须传入site参数,值为你的SharePoint站点根地址,否则sp-request无法识别请求目标,默认会向本地发起请求,这就是报错里connect ECONNREFUSED 127.0.0.1:443的直接原因。
2. 删除多余的resolve调用
你在spr.get请求发出后直接执行了resolve(),会直接把当前Promise标记为完成,完全不会等待接口返回校验结果。
3. 可选优化:@FileUrl参数放到query配置
可以避免手动拼接URL的转义问题,写法更稳妥。
修复后代码片段
const sprequest = require('sp-request'); await new Promise((resolve, reject) => { gulp .src(folderLocation) .pipe( spsync({ username: uname, password: pwd, site: siteCatalogUrl + "/", libraryPath: catalogName, publish: true, verbose: true })) .on("finish", () => { // 修复1:初始化传入site参数 var spr = sprequest.create({ username: uname, password: pwd, site: siteCatalogUrl }); var fileRelativeUrl = "/sites/JJTest/AppCatalog/test.sppkg"; var filepath = `${siteCatalogUrl}/_api/web/GetFileByServerRelativeUrl(@FileUrl)/$value`; console.log('trying to retrieve: ' + filepath); spr.get(filepath, { encoding: null, // 优化:query参数单独配置,自动处理转义 query: { '@FileUrl': `'${fileRelativeUrl}'` } }) .then(data => { expect(fileContent.equals(data.body)).is.true; resolve(); }) .catch(err => { console.log('errored out') console.log(err) reject(err); }); // 修复2:删掉此处多余的resolve() }); });
内容的提问来源于stack exchange,提问作者dot
相关产品推荐
相关产品推荐

