在 Stripe 中将循环结构转换为 JSON
Converting circular structure to JSON in Stripe
我正在尝试将 Stripe 支付方式集成到我的 Ionic2 应用程序中。
当我点击我的支付按钮时,会出现条纹支付框(我插入卡号、到期日期和 CVC),当我点击 "Pay" 按钮时,它会从蓝色变为绿色,一切看起来都是工作,但如果我检查我的浏览器控制台,我会看到这个错误:
EXCEPTION: Converting circular structure to JSONErrorHandler.handleError @ error_handler.js:47next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3
error_handler.js:52 ORIGINAL STACKTRACE:ErrorHandler.handleError @ error_handler.js:52next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3
error_handler.js:53 TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at RPC.sendMessage (checkout.js:2)
at RPC.sendMessage (checkout.js:2)
at checkout.js:2
at RPC.ready (checkout.js:2)
at RPC.invoke (checkout.js:2)
at RPC.invoke (checkout.js:2)
at RPC.processMessage (checkout.js:2)
at RPC.processMessage (checkout.js:2)
at RPC.message (checkout.js:2)
我知道我的问题与的问题基本相同,但是,由于7个月过去了,我想问问你是否有更好的方法来解决这个问题,因为写的人已经接受了回答说这种解决方式可怕.
顺便说一句,如果我按照他的回答,我是否必须更换这个
const _stringify = JSON.stringify;
JSON.stringify = function (value, ...args) {
if (args.length) {
return _stringify(value, ...args);
} else {
return _stringify(value, function (key, value) {
if (value && key === 'zone' && value['_zoneDelegate']
&& value['_zoneDelegate']['zone'] === value) {
return undefined;
}
return value;
});
}
};
有了这个:
message = JSON.stringify({
method: method,
args: args,
id: id
});
???
或者我应该保留两个块(一个在另一个之前)?
提前致谢。
不幸的是,这仍然是唯一的答案。
您只需要包括:
const _stringify = JSON.stringify;
JSON.stringify = function (value, ...args) {
if (args.length) {
return _stringify(value, ...args);
} else {
return _stringify(value, function (key, value) {
if (value && key === 'zone' && value['_zoneDelegate']
&& value['_zoneDelegate']['zone'] === value) {
return undefined;
}
return value;
});
}
};
在您启动 Checkout 之前的代码中;您包含的另一个代码块是问题所在,但它在 Checkout 本身内部,因此您无需担心。
我正在尝试将 Stripe 支付方式集成到我的 Ionic2 应用程序中。
当我点击我的支付按钮时,会出现条纹支付框(我插入卡号、到期日期和 CVC),当我点击 "Pay" 按钮时,它会从蓝色变为绿色,一切看起来都是工作,但如果我检查我的浏览器控制台,我会看到这个错误:
EXCEPTION: Converting circular structure to JSONErrorHandler.handleError @ error_handler.js:47next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3
error_handler.js:52 ORIGINAL STACKTRACE:ErrorHandler.handleError @ error_handler.js:52next @ application_ref.js:272schedulerFn @ async.js:82SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:74NgZone.triggerError @ ng_zone.js:278onHandleError @ ng_zone.js:257t.handleError @ polyfills.js:3e.runTask @ polyfills.js:3invoke @ polyfills.js:3
error_handler.js:53 TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at RPC.sendMessage (checkout.js:2)
at RPC.sendMessage (checkout.js:2)
at checkout.js:2
at RPC.ready (checkout.js:2)
at RPC.invoke (checkout.js:2)
at RPC.invoke (checkout.js:2)
at RPC.processMessage (checkout.js:2)
at RPC.processMessage (checkout.js:2)
at RPC.message (checkout.js:2)
我知道我的问题与
顺便说一句,如果我按照他的回答,我是否必须更换这个
const _stringify = JSON.stringify;
JSON.stringify = function (value, ...args) {
if (args.length) {
return _stringify(value, ...args);
} else {
return _stringify(value, function (key, value) {
if (value && key === 'zone' && value['_zoneDelegate']
&& value['_zoneDelegate']['zone'] === value) {
return undefined;
}
return value;
});
}
};
有了这个:
message = JSON.stringify({
method: method,
args: args,
id: id
});
???
或者我应该保留两个块(一个在另一个之前)?
提前致谢。
不幸的是,这仍然是唯一的答案。
您只需要包括:
const _stringify = JSON.stringify;
JSON.stringify = function (value, ...args) {
if (args.length) {
return _stringify(value, ...args);
} else {
return _stringify(value, function (key, value) {
if (value && key === 'zone' && value['_zoneDelegate']
&& value['_zoneDelegate']['zone'] === value) {
return undefined;
}
return value;
});
}
};
在您启动 Checkout 之前的代码中;您包含的另一个代码块是问题所在,但它在 Checkout 本身内部,因此您无需担心。