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

Square SDK中createPayment未定义?已做多项排查求解答

解决Square SDK v42.2.0中createPayment属性未定义的错误

错误根源

报错TypeError: 无法读取未定义的属性(读取'createPayment')的核心原因是**square.paymentsApi为undefined**,导致无法访问其下的createPayment方法。

针对性解决方案

1. 显式指定实例化环境参数

Square SDK v42.2.0中,虽然environment默认值为production,但显式传入参数可避免因环境配置缺失导致的实例化异常。修改实例化代码:

const square = new SquareClient({
  accessToken: process.env.SQUARE_ACCESS_TOKEN,
  environment: process.env.SQUARE_ENVIRONMENT || 'production' // 按需切换为sandbox
});

2. 验证SquareClient实例结构

在try块开头添加日志,确认实例是否包含paymentsApi属性:

try {
  console.log('Square Client结构:', square); // 检查输出中是否有paymentsApi
  // 其余代码...
}

如果输出中无paymentsApi,说明实例化过程存在异常,需排查accessToken是否有效、环境变量是否正确加载。

3. 修复CommonJS导入方式

部分情况下,CommonJS导出可能存在默认导出的问题,尝试调整导入代码:

// 替代原导入方式
const SquareClient = require('square').SquareClient;

或:

const squarePkg = require('square');
const SquareClient = squarePkg.default.SquareClient;

4. 重新安装SDK依赖

若以上步骤无效,可能是依赖缓存或安装不完整导致,执行以下命令重装:

npm uninstall square
npm install square@42.2.0

额外检查点

  • 确认process.env.SQUARE_ACCESS_TOKEN和process.env.SQUARE_LOCATION_ID已正确加载,可在实例化前打印验证:
    console.log('Access Token:', process.env.SQUARE_ACCESS_TOKEN);
    console.log('Location ID:', process.env.SQUARE_LOCATION_ID);
    
  • 若使用沙箱环境,需确保accessToken和locationID均为沙箱环境的对应值,而非生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:33:20