记录一个使用pnpjs时遇到的一个问题

本文介绍了在使用SPFx创建webpart并结合pnpjs访问SharePoint列表时遇到的404错误。问题出现在将webpart部署到tenant租户并在sitepages页面上使用时,pnpjs构造的REST API URL错误。解决方案是通过指定URL构造正确的Site或Web对象,避免依赖全局sp对象。参考了PnP-JS-Core和pnpjs的相关issue讨论。
摘要由CSDN通过智能技术生成

使用SPFx创建了一个webpart,其中使用pnpjs访问列表,在online workbench中一切正常,因为workbench的url是https://contoso.sharepoint.com/sites/testweb/_layouts/15/workbench.aspx

代码如下,这里使用sp这个全局对象,获取当前web,然后读取list数据:

sp.web.lists
  .getByTitle('TestList').items.get()
  .then(items => console.log(items))
  .catch(err => console.log(err));

但是将webpart部署到tenant租户中,然后添加到页面上的时候,发现pnpjs读取列表数据报错,出现了一个404的错误:

Uncaught (in promise) Error: Error making HttpClient request in queryable [404]

经过debug发现pnpjs调用的rest api url是错误的:

https://contoso.sharepoint.com/sites/Testweb/SitePages/_api/web/lists/getByTitle('TestList')

正常的rest api url 应该是:

https://contoso.sharepoint.com/sites/Testweb/_api/web/lists/getByTitle('TestList')

原因是直接在页面中运行pnpjs,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值