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

React集成Cashfree支付遇‘Cannot find name Cashfree’错误求助

解决Cashfree SDK "Cannot find name Cashfree" 报错问题

以下是几种可行的修复方案:

  • 保证脚本加载顺序
    你的业务代码必须等Cashfree SDK脚本完全加载后再执行。如果是在React、Vue这类框架的组件里直接调用new Cashfree(),很可能因为SDK还没加载完成就跑代码导致报错。
    可以把调用代码放到window.onload事件里,或者给SDK脚本加onload回调:

    <script src="https://sdk.cashfree.com/js/ui/2.0.0/cashfree.sandbox.js" onload="initCashfree()"></script>
    <script>
      function initCashfree(sessionId) {
        let cf = new Cashfree(sessionId);
        // 这里写后续的Cashfree操作逻辑
      }
    </script>
    
  • 显式调用全局对象上的Cashfree
    Cashfree SDK会挂载到浏览器的window全局对象上,所以可以直接用window.Cashfree来实例化:

    let cf = new window.Cashfree(session_id);
    

    要是用TypeScript开发,还得声明全局类型避免类型检查报错:

    declare global {
      interface Window {
        Cashfree: any;
      }
    }
    
  • 检查SDK脚本是否加载成功
    打开浏览器开发者工具的Network面板,搜索cashfree.sandbox.js,确认它的HTTP状态码是200(加载成功)。如果加载失败,先排查网络问题或者脚本URL是否输入正确。

  • 单页框架里的动态加载方案
    如果是Vue、React这类单页应用,除了上面的方法,还可以动态创建脚本标签,确保SDK加载完成后再执行实例化代码:
    比如React中的示例:

    useEffect(() => {
      const cashfreeScript = document.createElement('script');
      cashfreeScript.src = 'https://sdk.cashfree.com/js/ui/2.0.0/cashfree.sandbox.js';
      cashfreeScript.onload = () => {
        const cf = new window.Cashfree(session_id);
        // 执行初始化或其他操作
      };
      document.body.appendChild(cashfreeScript);
      // 组件卸载时移除脚本
      return () => document.body.removeChild(cashfreeScript);
    }, [session_id]);
    

内容的提问来源于stack exchange,提问作者Punit Bhesota

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:57:27