Node.js使用Square API时出现TypeError: Client is not a constructor
解决Square SDK初始化报错“TypeError: Client is not a constructor”
问题重现
按照Square开发者官网示例代码初始化客户端,仅将环境参数替换为process.env.SQUARE_ENVIRONMENT,但持续报错:
TypeError: Client is not a constructor
预期成功创建Square客户端实例。
可能的原因及解决方法
1. Square SDK版本不兼容
Square SDK v3及以上版本的导出结构发生了变化,CommonJS环境下需要注意default导出:
- 调整导入方式,显式获取default导出:
require('dotenv').config(); const { Client, Environment } = require('square').default; const env = process.env.SQUARE_ENVIRONMENT; const environment = env === 'production' ? Environment.Production : Environment.Sandbox; const client = new Client({ bearerAuthCredentials: { accessToken: process.env.SQUARE_ACCESS_TOKEN }, environment: environment }); - 或者通过完整模块引用:
require('dotenv').config(); const square = require('square'); const env = process.env.SQUARE_ENVIRONMENT; const environment = env === 'production' ? square.Environment.Production : square.Environment.Sandbox; const client = new square.Client({ bearerAuthCredentials: { accessToken: process.env.SQUARE_ACCESS_TOKEN }, environment: environment });
2. 环境变量类型不匹配
process.env.SQUARE_ENVIRONMENT是字符串类型,而SDK要求传入Environment枚举值,直接赋值字符串可能引发初始化异常:
- 先将字符串环境变量映射为SDK枚举值,再传入配置:
const envStr = process.env.SQUARE_ENVIRONMENT; const targetEnv = envStr === 'production' ? Environment.Production : Environment.Sandbox;
3. 依赖安装或导入错误
- 确认已正确安装Square SDK:
npm install square - 检查导入语句拼写,确保是
require('square')而非其他错误路径。
内容的提问来源于stack exchange,提问作者ad3
相关产品推荐
相关产品推荐

