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

使用Electron调用Amazon SP API时marketplaceIds合法却报错求助

解决Amazon SP API调用中"Invalid 'marketplaceIds' provided"错误

针对你用Electron调用SP API遇到的这个错误,结合代码和常见踩坑点,给你几个具体的排查和解决方向:

1. 修正callAPI的参数结构

很多人踩坑是没注意amazon-sp-api库的参数要求——marketplaceIds需要嵌套在query对象里,而非直接作为顶层参数。修改调用代码试试:

let res = await spClient.callAPI({
    operation: "searchCatalogItems",
    endpoint: "catalogItems",
    query: {
        marketplaceIds: ["A1PA6795UKMFR9"],
        identifiers: eanNumbers,
        identifiersType: "EAN",
    },
});

这个库的callAPI方法要求查询参数统一放在query字段下,直接传顶层会被忽略或解析异常。

2. 验证环境变量与客户端授权

  • 确认.env文件里的CLIENT_ID、SECRET_KEY、REFRESH_TOKEN都正确加载:可以在代码里加一行console.log(process.env.REFRESH_TOKEN)验证,Electron中加载.env有时会有路径问题,确保path: './api.env'是相对于Electron主进程的正确路径。
  • 检查你的SP应用是否授权了对应市场(英国站A1PA6795UKMFR9):如果授权时没选这个市场,即使ID正确也会触发无效参数错误。

3. 排查库版本兼容性

不同版本的amazon-sp-api参数格式可能有差异,比如旧版本可能要求marketplaceId(单数)或者其他结构:

  • 查看当前安装的库版本:npm list amazon-sp-api
  • 对比官方最新文档的参数示例,必要时升级到稳定版本:npm install amazon-sp-api@latest

4. 简化请求做基础测试

先简化请求,用固定的EAN值测试,排除eanNumbers参数的干扰:

let res = await spClient.callAPI({
    operation: "searchCatalogItems",
    endpoint: "catalogItems",
    query: {
        marketplaceIds: ["A1PA6795UKMFR9"],
        identifiers: ["0000000000001"], // 测试用的有效EAN
        identifiersType: "EAN",
    },
});

如果简化后能成功,再回头排查eanNumbers的格式问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:25:03