การเรียก API ส่งคืนข้อผิดพลาดเกินขนาดสแต็กการโทรสูงสุด

ฉันกำลังพยายามสร้างบริการชำระเงินออนไลน์โดยใช้ Stripe และฉันต้องการสร้างจุดสิ้นสุด API โดยใช้ Express และ Node.js เพื่อให้เซิร์ฟเวอร์ส่วนหน้าของฉันสามารถเรียก API นี้ ซึ่งจะจัดการค่าบริการให้ฉันในส่วนแบ็กเอนด์ ตัวอย่างต่อไปนี้คือ 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;

อย่างไรก็ตาม เมื่อฉันพยายามทดสอบตำแหน่งข้อมูลนี้ด้วยการเรียกโดยใช้บุรุษไปรษณีย์ ฉันได้รับข้อผิดพลาด Maximum call stack size exceeded ฟังก์ชัน stripe ทำงานได้ดี ดังนั้นฉันคิดว่าข้อผิดพลาดนั้นมาจากการพยายามเรียกใช้ฟังก์ชัน stripe ภายในจุดสิ้นสุด API ใครช่วยบอกฉันทีว่าทำไมข้อผิดพลาดนี้จึงเกิดขึ้นและอาจแนะนำวิธีแก้ไข ขอบคุณ


person Community    schedule 06.04.2020    source แหล่งที่มา
comment
รหัสของคุณอาจซ้ำกันที่ไหนสักแห่งและคุณได้รับสแต็กโอเวอร์โฟลว์ในเบราว์เซอร์ ไม่มีเจตนาเล่นสำนวน   -  person L0uis    schedule 06.04.2020
comment
@ L0uis ฉันคิดว่ามันน่าจะเป็นสแต็กล้น แต่ฉันไม่รู้ว่าการเรียกซ้ำจะอยู่ที่ไหน ฟังก์ชัน stripe นั้นไม่สามารถเรียกซ้ำได้อย่างแน่นอน และฉันเพียงแค่เรียกจุดสิ้นสุดจากบุรุษไปรษณีย์   -  person    schedule 06.04.2020


คำตอบ (1)


คุณกำลังส่ง req ทั้งหมดเป็นอาร์กิวเมนต์ใน stripe.tokens.create(); คุณอาจต้องการเพียงแค่ส่ง req.body แทน (หรือเนื้อหาที่แยกวิเคราะห์ในรูปแบบบางอย่าง ขึ้นอยู่กับประเภทของข้อมูลที่คุณโพสต์ที่นี่)

นอกจากนี้ คุณไม่ควรสร้างโทเค็นฝั่งเซิร์ฟเวอร์เช่นนี้ คุณควรใช้ Stripe.js สำหรับสิ่งนี้: https://stripe.com/docs/js

person floatingLomas    schedule 06.04.2020
comment
ขอบคุณ คุณรู้ไหมว่าฉันจะรวมวัตถุ Stripe ได้อย่างไร ฉันได้ลองรวมแท็กสคริปต์ Strip.js แล้ว แต่ฉันไม่สามารถเข้าถึงวัตถุ Stripe ในคลาสส่วนประกอบของฉันได้ ฉันทำงานที่แองกูลาร์ - person ; 06.04.2020
comment
ไม่มีคำแนะนำเชิงมุมอย่างเป็นทางการ ดังนั้นฉันขอแนะนำให้ใช้ google เพียงอย่างเดียว บางสิ่งเช่นนี้อาจใช้งานได้: devdungeon.com/content/using-stripejs-elements- เชิงมุม - person floatingLomas; 07.04.2020