使用 Android 模拟器时出现 ReferenceError

ReferenceError when using Android Emulator

我将 stripe v3 与我的 ionic 4 应用程序和 angular 一起使用。最近我在 android 和 iOS 上编译了应用程序。当我使用

cordova ionic emulate ios

一切正常。当我使用时:

cordova ionic emulate android

应用程序正在构建,但我在闪屏后出现了白屏。我在 index.html:

中实现了条纹
<head>
<head>
  <script src="https://js.stripe.com/v3/"></script>
<!-- rest of code... ->

来自 chrome 控制台的错误:

ERROR Error: Uncaught (in promise): ReferenceError: Stripe is not defined ReferenceError: Stripe is not defined at new PaymentsService

支付服务:

Declare var Stripe;

浏览器和 iOS 工作。 Android 在模拟器中 - 不是。

我应该修复什么?

提前致谢。

添加脚本标签对于 Ionic 来说还不够。您需要使用适当的依赖注入,并且有一个用于 Stripe 的插件。

我建议按照他们的文档了解如何使其正常工作:

https://ionicframework.com/docs/native/stripe

https://github.com/zyra/cordova-plugin-stripe

这里是插件集成指南。但是,如果您使用的是 v3,则可能会有差异。不确定插件是否支持该版本

https://enappd.com/blog/ionic-4-stripe-payment-integration-with-firebase-for-apps-and-pwa/17/

除上述所有内容外,还需要检查您的应用是否允许从 stripe CDN 获取文件。

<allow-navigation href="https://js.stripe.com" />

尝试在您的配置中添加以上内容xml

如果你非要用javascript库而不用插件,可能是你声明Stripe的地方不对。

试着把它放在 typings/cordova-typings.d.ts

谢谢大家的帮助。

老实说,我解决了我的问题 - 我不知道它为什么起作用,但是:

  1. 已删除android 平台
ionic cordova platform remove android
  1. 已删除 www 文件夹
rm -rf www/
  1. 重建android平台:
ionic cordova platform add android
  1. 已将 "async" 添加到我的 index.html
<!-- async added to script tag -->
<script src="https://js.stripe.com/v3/" async></script>

谢谢,