【发布时间】: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'