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

Commerce.js客户端报错Invalid public key,已选用公钥仍无法解决

报错原因分析
  • 环境变量未正确加载:React 运行时未成功读取到.env文件内配置的公钥值
  • 环境变量配置不符合规范:非Create React App脚手架创建的项目(如Vite、自定义Webpack项目)默认不会自动暴露REACT_APP_前缀的环境变量到前端运行时
  • 公钥存在冗余字符:复制粘贴密钥时带入了空格、换行符、额外引号等隐形冗余字符,导致实际传入SDK的密钥和正确值不符
  • SDK版本不兼容:旧版@chec/commerce.js对新格式的公钥识别存在兼容问题
  • 密钥类型混淆:误将私钥(sk开头)当做公钥传入,不过你当前使用的是pk_test开头的测试公钥,该概率较低
排查解决步骤
  1. 先验证环境变量是否读取成功,在commerce.js中增加打印逻辑确认实际读取到的公钥值:
import Commerce from '@chec/commerce.js';
// 新增打印逻辑,启动项目后在浏览器控制台查看输出
console.log('读取到的公钥值:', process.env.REACT_APP_CHEC_PUBLIC_KEY);
export const commerce = new Commerce(process.env.REACT_APP_CHEC_PUBLIC_KEY, true);

如果控制台输出为undefined,说明环境变量未加载成功,继续往下排查。

  1. 检查环境变量文件配置
  • 确认.env文件存放在项目根目录(和package.json同级,不要放在src文件夹内)
  • 修改.env文件配置后,必须重启React开发服务,新的环境变量才会生效
  • 如果你使用的是Vite脚手架,需要将环境变量前缀修改为VITE_,读取方式调整为import.meta.env.VITE_CHEC_PUBLIC_KEY
  • 不要给环境变量值加额外引号,引号会被识别为值的一部分,直接写REACT_APP_CHEC_PUBLIC_KEY=pk_test_xxxx即可
  1. 排除环境变量问题
    临时用硬编码的方式传入公钥测试,如果不报错就可以确定是环境变量加载的问题:
// 临时硬编码测试,验证密钥本身是否有效
export const commerce = new Commerce('pk_test_32015299720e5050ac997c8e08a77c1a0e24bf21215b7', true);
  1. 升级SDK版本
    如果硬编码密钥仍然报错,升级Commerce.js到最新版本即可解决兼容问题:
    npm install @chec/commerce.js@latest
    或使用yarn:
    yarn add @chec/commerce.js@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:39:02