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

使用Shopify Node.js API获取全部产品时触发TypeError错误求助

问题分析

报错TypeError: Cannot read properties of undefined (reading 'all')说明你代码里的shopify.rest.Product是undefined,无法调用其all方法。这大概率是因为你使用的@shopify/shopify-api版本(v8+)调整了REST资源的引用方式,不再通过shopify实例的rest属性挂载资源类。

解决方案

1. 确认依赖版本

查看你的package.json里@shopify/shopify-api的版本,如果是v8及以上,需要改用单独导入资源类的方式。

2. 修改代码引用方式

在文件顶部导入Product资源类:

import { Product } from '@shopify/shopify-api/rest/admin/2024-07';

注意:替换2024-07为你实际使用的Shopify API版本号,比如2024-04、2023-10等。

然后修改获取产品的代码,直接调用Product.all():

// 替换原来的 shopify.rest.Product.all(...)
const products = await Product.all({
  session: callback.session,
});

3. 旧版本兼容(如果使用v7及以下)

如果你坚持使用v7及以下版本,检查shopify实例的初始化是否完整,确保配置中包含正确的API版本:

import { Shopify } from '@shopify/shopify-api';

Shopify.Context.initialize({
  API_KEY: 'your-api-key',
  API_SECRET_KEY: 'your-api-secret',
  SCOPES: ['read_products'],
  HOST_NAME: 'your-host-name',
  API_VERSION: '2023-10', // 必须指定正确的API版本
  IS_EMBEDDED_APP: false,
});

确认后,shopify.rest.Product应该能正常访问。

修正后的完整代码示例
import { Product } from '@shopify/shopify-api/rest/admin/2024-07';

app.get('/auth/callback', async (req: any, res: any) => {
  try {
    console.log('CALLBACK');
    const callback = await shopify.auth.callback({
      rawRequest: req,
      rawResponse: res,
    });

    const response = await shopify.webhooks.register({
      session: callback.session,
    });

    // 改用导入的Product类调用all方法
    const products = await Product.all({
      session: callback.session,
    });

    if (!response['PRODUCTS_CREATE'][0]?.success) {
      Sentry.captureException(
        `Failed to register PRODUCTS_CREATE webhook: ${response['PRODUCTS_CREATE'][0]?.result}`,
      );
    }
    
    res.send('AUTH');
  } catch(e) {
    console.log(e);
    Sentry.captureException(e);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:16:28