【问题标题】:RangeError: Maximum Call Size Exceeding, Stripe session createRangeError:超过最大调用大小,创建条带会话
【发布时间】:2021-02-18 19:46:13
【问题描述】:

我正在使用条带(服务器和客户端都使用会话)进行支付。我在后端使用节点并在前端做出反应。我已经开始构建用于创建新会话的服务器路由。

路线-

router.route('/new-session/:orderId').get(protectMiddleware, async (req, res) => {
    try {
        const order = await Order.findById(req.params.orderId);
        const domain = `${req.protocol}://${req.get('host')}`;

        const session = await stripe.checkout.sessions.create({
            payment_method_types: ['card'],
            line_items: order.orderItems,
            mode: 'payment',
            success_url: `${domain}/`,
            cancel_url: `${domain}/order/${req.params.orderId}`,
            customer_email: req.user.email,
            client_reference_id: req.params.orderId,
        });

        res.status(200).json({ status: 'success', session });
    } catch (error) {
        console.log(error);
        res.send(error.message);
    }
});

我得到的错误是 -

[0] RangeError: Maximum call stack size exceeded
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:47:35)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:109:33)
[0]     at stringify (/Users/akash/Code/Projects/ProShop/node_modules/qs/lib/stringify.js:125:33)

【问题讨论】:

    标签: javascript node.js stripe-payments


    【解决方案1】:

    我没有直接看到问题出在哪里,但你能尝试从这个回调中返回一些东西吗?例如:

    router.route('/new-session/:orderId').get(protectMiddleware, async (req, res) => {
        try {
            const order = await Order.findById(req.params.orderId);
            const domain = `${req.protocol}://${req.get('host')}`;
    
            const session = await stripe.checkout.sessions.create({
                payment_method_types: ['card'],
                line_items: order.orderItems,
                mode: 'payment',
                success_url: `${domain}/`,
                cancel_url: `${domain}/order/${req.params.orderId}`,
                customer_email: req.user.email,
                client_reference_id: req.params.orderId,
            });
    
            return res.status(200).json({ status: 'success', session }); // change here
        } catch (error) {
            console.log(error);
            return res.send(error.message); // change here
        }
    });
    

    【讨论】:

    • 可能有一种方法在我们目前看不到的地方发生了循环/递归。从您的错误消息中,我感觉有多次调用的方法或函数。我看不到任何形式或迭代
    • 或许,使用排除法你就能找到问题所在。也许在这条路线上只是在空数组中返回一个成功响应,看看你是否有问题。
    【解决方案2】:

    不要尝试将整个 Session 发送回前端,您所需要的只是 ID,而尝试将其字符串化可能会给您带来错误。 而不是

    res.status(200).json({ status: 'success', session });
    

    只是做

    res.status(200).json({ status: 'success', sessionId: session.id });
    
    

    然后在前端解析 JSON 并使用 sessionId 调用 redirectToCheckout。

    【讨论】:

      猜你喜欢
      • 2014-08-19
      • 2021-10-24
      • 2018-02-06
      • 2018-12-08
      • 1970-01-01
      • 2021-05-30
      • 2021-07-11
      相关资源
      最近更新 更多