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

Node.js首次连接WP REST API无法获取产品问题求助

问题排查与修复方案

1. 核心问题分析

你的代码存在两个关键问题:

  • 异步请求的结果未被处理:getAsync返回Promise后,then里仅解析JSON但未做任何输出/存储操作,同时缺少错误捕获逻辑,导致即使请求失败也无任何提示。
  • 依赖包可能过时:woocommerce-api是较旧的第三方包,官方已推出维护更及时的@woocommerce/woocommerce-rest-api,旧包可能存在兼容性问题。

2. 现有代码快速修复

修改代码,添加错误捕获并处理请求结果:

const express = require("express");
const app = express();

const cors = require("cors");
const mysql = require("mysql2");

var WooCommerceAPI = require("woocommerce-api");

var WooCommerce = new WooCommerceAPI({
  url: "http://mysite.local",
  consumerKey: "my_key",
  consumerSecret: "my_secret",
  wpAPI: true,
  version: "wc/v3"
});

// 添加错误捕获,处理请求结果
WooCommerce.getAsync("products")
  .then(function(result) {
    const products = JSON.parse(result.toJSON().body);
    console.log("获取到的产品数据:", products); // 打印结果到控制台
  })
  .catch(function(error) {
    console.error("请求错误:", error); // 捕获并打印错误信息
  });

app.listen("3001", () => {
  console.log("Server is running on port 3001");
});

运行修改后的代码,控制台会输出产品数据或具体错误信息,帮助定位问题。

3. 推荐:升级到官方REST API包

官方维护的@woocommerce/woocommerce-rest-api兼容性更好,使用方式更简洁,建议替换旧包:

步骤1:安装新包

npm uninstall woocommerce-api
npm install @woocommerce/woocommerce-rest-api

步骤2:重写代码

const express = require("express");
const app = express();

const cors = require("cors");
const mysql = require("mysql2");

const WooCommerceRestApi = require("@woocommerce/woocommerce-rest-api").default;

const api = new WooCommerceRestApi({
  url: "http://mysite.local",
  consumerKey: "my_key",
  consumerSecret: "my_secret",
  version: "wc/v3",
  // 本地环境可添加此项禁用SSL验证(生产环境请勿使用)
  axiosConfig: {
    httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false })
  }
});

// 使用async/await简化异步逻辑
async function fetchProducts() {
  try {
    const response = await api.get("products");
    console.log("产品数据:", response.data);
  } catch (error) {
    console.error("请求失败:", error.response?.data || error.message);
  }
}

fetchProducts();

app.listen("3001", () => {
  console.log("Server is running on port 3001");
});

4. 额外排查点

  • 检查本地环境是否能正常访问http://mysite.local,可通过curl http://mysite.local/wp-json/wc/v3/products -u my_key:my_secret测试命令行请求是否正常。
  • 确认WooCommerce设置中,REST API已启用,且密钥拥有read_products权限。

内容的提问来源于stack exchange,提问作者Shahrukh Altaf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:24:42