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

使用Node.js的sp-request连接SharePoint列表时遇'match'未定义错误求助

Hey there, let's break down why you're hitting that Cannot read property 'match' of undefined error with sp-request and fix it step by step! This error usually pops up when the library can't parse something it expects—most commonly your SharePoint API URL or authentication credentials.

Step 1: Fix the API URL Format

First, let's clean up your request URL. The escaped single quotes around your list title (\'MY TITLE\') are technically valid, but they're easy to mess up. Swap them for double quotes inside the URL string to avoid escaping headaches:

spr.get('https://your-tenant.sharepoint.com/sites/mysharepoint/_api/web/lists/GetByTitle("MY TITLE")')

Also, double-check that your full SharePoint site URL is correct. For SharePoint Online, it should look like https://<your-tenant-name>.sharepoint.com/sites/<your-site-name>—don't skip the tenant domain part!

Step 2: Match Authentication Config to Your SharePoint Environment

sp-request handles auth differently for SharePoint Online vs. On-Premises:

  • SharePoint Online (O365): Make sure your username is the full email address (e.g., john.doe@yourcompany.onmicrosoft.com). Also, note that sp-request doesn't support accounts with Multi-Factor Authentication (MFA) enabled—if you have MFA, you'll need to switch to an Azure AD app-based auth approach or use a tool like sp-rest-proxy.
  • SharePoint On-Premises: Add a domain field to your credential options:
    var credentialOptions = {
      username: 'your-username',
      password: 'your-password',
      domain: 'your-corporate-domain' // e.g., CONTOSO
    };
    

Step 3: Add Detailed Error Logging

To get clearer insight into what's failing, update your catch block to log the full error and stack trace:

.catch(err => {
  console.log('Full error details:', err);
  console.log('Error stack trace:', err.stack);
});

Step 4: Test a Basic Connection First

Before fetching the list, test if you can connect to a simpler endpoint (like getting the site's web info) to rule out auth/network issues:

spr.get('https://your-tenant.sharepoint.com/sites/mysharepoint/_api/web')
  .then(response => {
    console.log('Site Title:', response.body.d.Title);
  })
  .catch(err => {
    console.log(err);
  });

Bonus Checks

  • Verify your list title is exactly correct (it's case-sensitive, so watch for spaces and special characters).
  • Make sure your account has at least read permissions to the list and site.
  • Confirm your network isn't blocking access to SharePoint (no proxy/firewall restrictions).

Fixed Example Code

Here's a cleaned-up version of your code with these fixes applied (for SharePoint Online):

var express = require('express');
var router = express.Router();
var sprequest = require('sp-request');

router.get('/', function (req, res, next) {
  var credentialOptions = {
    username: 'your-email@yourtenant.onmicrosoft.com',
    password: 'your-password'
  };

  let spr = sprequest.create(credentialOptions);
  
  spr.get('https://your-tenant.sharepoint.com/sites/mysharepoint/_api/web/lists/GetByTitle("MY TITLE")')
    .then(response => {
      const listId = response.body.d.Id;
      console.log('List Id:', listId);
      res.send(`Success! List Id: ${listId}`); // Send response to frontend
    })
    .catch(err => {
      console.error('Error fetching list:', err);
      res.status(500).send(`Failed to retrieve list: ${err.message}`); // Return error to frontend
    });
});

module.exports = router;

内容的提问来源于stack exchange,提问作者good.learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:40:47