在SPFx中使用PnPjs 8.15报错:get() is not a function求助
问题描述
在SPFx项目中使用PnPjs 8.15.0版本,尝试获取站点非隐藏列表集合时遇到错误:
TypeError: this.sp.web.lists.get is not a function
同一文件中列表项更新功能可正常运行,推测问题出在API使用或导入上。相关代码如下:
导入代码:
import { spfi, SPFx } from "@pnp/sp"; import "@pnp/sp/webs"; import "@pnp/sp/lists"; import "@pnp/sp/items"; import "@pnp/sp/files"; import "@pnp/sp/folders"; import { IField, IFieldAddResult, FieldTypes, IFieldInfo } from "@pnp/sp/fields/types"; import "@pnp/sp/lists/web"; import "@pnp/sp/fields"; import "@pnp/sp/items/get-all"; import {Web, IWeb} from "@pnp/sp/presets/all";
获取列表代码:
const lists: any[] = await sp.web.lists.filter('Hidden eq false').get();
解决方案
问题根源是PnPjs v8+版本对集合查询的API做了调整,废弃了v7中的.get()方法,改为通过调用集合对象本身来执行请求。
基础修正(获取当前页数据):将
.get()替换为(),即可获取符合条件的列表集合:const lists: any[] = await sp.web.lists.filter('Hidden eq false')();获取全部列表(突破分页限制):
PnPjs默认分页返回100条数据,若站点列表数量较多,需导入专属模块使用.getAll()方法获取全部结果:- 添加导入:
import "@pnp/sp/lists/get-all"; - 修改查询代码:
const lists: any[] = await sp.web.lists.filter('Hidden eq false').getAll();
- 添加导入:
补充说明:列表项更新功能正常是因为更新操作的API在v8中未做类似变更,与集合查询的API调整无关。
内容的提问来源于stack exchange,提问作者Joe Johnston
相关产品推荐
相关产品推荐

