You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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()方法获取全部结果:

    1. 添加导入:
      import "@pnp/sp/lists/get-all";
      
    2. 修改查询代码:
      const lists: any[] = await sp.web.lists.filter('Hidden eq false').getAll();
      

补充说明:列表项更新功能正常是因为更新操作的API在v8中未做类似变更,与集合查询的API调整无关。

内容的提问来源于stack exchange,提问作者Joe Johnston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:43:26