升级cybersource-rest-client至^0.0.51时出现KeyGenerationApi构造函数错误
cybersource-rest-client升级至0.0.51后KeyGenerationApi构造函数报错解决
问题描述
将cybersource-rest-client版本从0.0.40升级到0.0.51后,触发如下错误:
{ "errorCode": "FAILED", "errorMessage": "TypeError: cybersource_rest_client__WEBPACK_IMPORTED_MODULE_0__.KeyGenerationApi is not a constructor" }
当前使用的代码片段:
import { ApiClient, KeyGenerationApi, GeneratePublicKeyRequest } from 'cybersource-rest-client'; const config = configuration(merchantDetails); const apiClient = new ApiClient(); const instance = await new KeyGenerationApi(config, apiClient); const request = await new GeneratePublicKeyRequest();
问题原因
从0.0.40到0.0.51的版本迭代中,KeyGenerationApi的导出规则或实例化逻辑发生了破坏性变更,不再支持直接通过new构造函数的方式创建实例。同时代码中new GeneratePublicKeyRequest()前的await是多余的——构造函数是同步操作,不需要异步等待。
解决方案
方案1:适配新版本的API实例化方式
新版本的SDK大概率将API实例的创建逻辑整合到了ApiClient中,调整代码如下:
import { ApiClient, GeneratePublicKeyRequest } from 'cybersource-rest-client'; const config = configuration(merchantDetails); // 将配置直接传入ApiClient构造函数 const apiClient = new ApiClient(config); // 通过ApiClient实例获取KeyGenerationApi实例 const keyGenerationApi = apiClient.getKeyGenerationApi(); // 构造请求对象不需要await const request = new GeneratePublicKeyRequest();
方案2:调整导入方式(若API改为默认导出)
如果KeyGenerationApi改为了默认导出,需要修改导入语句:
import { ApiClient, GeneratePublicKeyRequest } from 'cybersource-rest-client'; // 单独导入KeyGenerationApi默认导出 import KeyGenerationApi from 'cybersource-rest-client/dist/api/KeyGenerationApi'; const config = configuration(merchantDetails); const apiClient = new ApiClient(config); // 仅传入apiClient实例(新版本可能不再需要单独传config) const instance = new KeyGenerationApi(apiClient); const request = new GeneratePublicKeyRequest();
额外建议
- 务必查看cybersource-rest-client 0.0.41至0.0.51版本的CHANGELOG,明确API的具体变更细节,避免遗漏其他兼容点。
- 同步检查其他API的实例化代码,确保全量适配新版本规则。
内容的提问来源于stack exchange,提问作者Gopinath Kaliappan
相关产品推荐
相关产品推荐

