【问题标题】:API Call returns "Maximum call stack size exceeded" errorAPI 调用返回“超出最大调用堆栈大小”错误
【发布时间】:2020-07-18 01:05:56
【问题描述】:

我正在尝试使用 Stripe 创建在线支付服务,并且我想使用 Express 和 Node.js 创建一个 API 端点,以便我的前端服务器可以调用此 API,然后在后端为我处理费用。以下 sn-p 是我所拥有的 POST API:

const express = require('express');
const router = express.Router();
const stripe = require('stripe')('sk_test_mystripescretkey');

router.post('/token', (req, res) => {
  stripe.tokens.create({
    card: req,
  }).then(token => res.send(token))
    .catch(err => res.status(400).send(err.message));
});
module.exports = router;

但是,当我尝试通过使用 Postman 调用此端点来测试它时,我收到了 Maximum call stack size exceeded 错误。条带函数本身工作正常,所以我认为错误来自尝试在 API 端点内调用条带函数?有人可以让我知道为什么会发生此错误并建议修复吗?谢谢。

【问题讨论】:

  • 您的代码可能在某处递归,并且您在浏览器中遇到堆栈溢出。没有双关语。
  • @L0uis 我认为它可能是堆栈溢出,但我不知道递归可能在哪里。 stripe 函数本身当然不是递归的,我只是从 Postman 调用端点。

标签: node.js api express stripe-payments


【解决方案1】:

您将整个req 作为stripe.tokens.create() 中的参数发送;相反,您可能只想发送req.body(或以某种方式解析的正文,具体取决于您在此处发布的数据类型)。

您也不应该像这样在服务器端创建令牌 - 您应该为此使用 Stripe.js:https://stripe.com/docs/js

【讨论】:

  • 谢谢,你知道如何整合Stripe对象吗?我尝试包含 Strip.js 脚本标签,但我无法访问组件类中的 Stripe 对象。我在 Angular 工作。
  • 没有官方的 Angular 指南,所以我建议只用谷歌搜索;这样的事情可能会起作用:devdungeon.com/content/using-stripejs-elements-angular
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多