The error "no exported member SP" when working with SharePoint Framework (SPFx) and PnPJS typically indicates an issue with how the library is being imported or the specific version of the library you are using. Here's how you can address this issue:
Troubleshooting "No Exported Member SP" in PnPJS
Ensure Proper Installation of PnPJS: You need to make sure that you have installed the required PnPJS packages properly. To install the PnPJS libraries in your SPFx project, run the following command:
npm install @pnp/sp @pnp/logging @pnp/common @pnp/odata --save
Correct Import Statements: In the newer versions of PnPJS (v2 and above), the way you import has changed. The correct import for @pnp/sp should be:
import { sp } from "@pnp/sp";
If you are using the older syntax (like SP instead of sp), that may lead to the error.
Check Version Compatibility: If you're migrating from an older version of PnPJS (like version 1.x), the syntax for importing and usage has changed. The SP object was replaced with sp in version 2.x of the PnPJS library. Make sure you're using the correct syntax for your version.
Ensure Configuration in SPFx: For PnPJS to work properly in your SPFx solution, ensure the following configuration in your config.json file under the serve section, as this is necessary for the SharePoint context.
json
{
"pageUrl": "https://yourtenant.sharepoint.com/sites/yoursite/SitePages/page.aspx"
}
Usage Example with PnPJS in SPFx:
Here's a basic example of how to fetch list items using PnPJS in SPFx:
import { sp } from "@pnp/sp";
import "@pnp/sp/webs";
import "@pnp/sp/lists";
import "@pnp/sp/items";
sp.web.lists.getByTitle("YourListName").items.get().then((items) => {
console.log(items);
});
Make sure you're also including any necessary polyfills or additional libraries required for modern JavaScript functionality, especially if you're targeting older browsers or environments