【问题标题】:braintree on Angular2Angular2上的大脑树
【发布时间】:2017-01-20 19:00:39
【问题描述】:

我正在尝试让 Braintree 客户端示例 (https://developers.braintreepayments.com/start/hello-client/javascript/v3) 在 Angular2 上运行。我对 Angular2(和 Javascript)很陌生。

首先,我不确定是否应该在 package.json 的依赖项下添加 "braintree-web": "^3.6.3"。或者添加

<script src="https://js.braintreegateway.com/web/3.6.3/js/client.min.js"></script>

<script src="https://js.braintreegateway.com/web/3.6.3/js/hosted-fields.min.js"></script> 

在 index.html 下。我最终都做了。

运行 npm install 后,如果我查看 node_modules/braintree-web 内部,我只会看到 .js 文件。我没有看到任何 ts 文件。这是一个问题吗?我不应该为此使用braintree-web吗?这个包是为 Angular1 编写的吗?如果我确实必须使用 Braintree-web,我是否还需要在我的 index.html 中包含这两个 js 文件? Braintree-web 不是已经包含它们了吗?

在我的 payment.component.ts 文件中,我复制并粘贴了 Braintree 客户端代码:

import { braintree } from 'braintree-web/client';
...
ngOnInit() {
    var authorization = '...';
    var submit = document.querySelector('input[type="submit"]');

    braintree.client.create({
      authorization: authorization
    }, function (clientErr, clientInstance) {
      if (clientErr) {

当我尝试运行 tsc 时,我收到以下错误:

app/admin/user/payment.component.ts(3,27): 错误 TS2307: 找不到模块 'braintree-web/client'

我做错了什么?

【问题讨论】:

  • 你在app.module.ts中注册braintree模块了吗? stackoverflow.com/questions/40353886/…
  • 谢谢。我注意到那个人添加了 npm install @types/braintree-web@3.0.1。我现在实际上可以得到一些工作。到目前为止,我发现我确实需要在 index.html 中包含 js 文件,并且我确实需要 Braintree 包(除了类型之外)。但是......现在我在使用 Braintree 的示例代码时遇到了问题。基本上,他们从服务器返回一些对象,我尝试将其写入类的临时成员变量以供以后使用:this.temp = hostsFieldsInstance。但是,当我这样做时,我收到一个错误:未捕获的类型错误:无法读取未定义(…)的属性“临时”。有什么想法吗?
  • @JennaS 你是如何让它工作的?我已经复制了你所做的,但我仍然收到错误消息'找不到模块'braintree-web/client'

标签: angular braintree


【解决方案1】:

由于 Angular2 是强类型的,你不能只使用 Braintree 提供的 Javascript 示例代码。您需要为所有这些功能定义类型。所以Trying to integrate braintree-web into Angular2 是您需要安装@types/braintree-web 的第一个线索(在package.json 中)。这些不是官方的 Braintree 类型,而是来自 http://definitelytyped.org/ 的开源贡献。我向 Braintree 支持寻求帮助,他们提到您可以在 Angular2 中使用他们的 Javascript 示例代码,但您需要为每个参数指定一个类型。他们不能推荐来自 absolutetyped 的 types 包,因为它不是他们自己的代码。

您不再需要文件顶部的任何导入,但您确实需要 index.html 中包含的 2 个 Braintree Javascript 文件。

【讨论】:

  • 如果您尝试按照此处指定的方式通过 npm 安装,您可以告诉我:developers.braintreepayments.com/guides/client-sdk/setup/… - 如果是这样,运气好吗?如果可能的话,我宁愿避免直接从 Braintree 的服务器中包含 JS。
  • 没试过这个。我想我在尝试执行此操作时没有看到此选项。我会试一试。谢谢!
  • 对于它的价值,这就是我现在正在做的事情,直接通过角度使用braintree(包括打字等)。我是通过 npm 安装的。到目前为止似乎工作!
  • @KevinMitchell 你能告诉我你是如何通过 npm 工作的吗?
猜你喜欢
  • 1970-01-01
  • 2020-09-13
  • 2011-07-05
  • 1970-01-01
  • 2019-05-15
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多