我正在尝试使用Angular2上的Braintree客户端示例(https://developers.braintreepayments.com/start/hello-client/javascript/v3).我是Angular2(和Javascript)的新手.
首先,我不确定我是否应该在package.json的依赖项下添加"braintree-web":"^ 3.6.3".或者添加
和
在index.html下.我最终做了两件事.
运行npm install之后,如果我查看node_modules/braintree-web,我只看到.js文件.我没有看到任何ts文件.这是一个问题吗?我不应该使用braintree-web吗?这个包是为Angular1编写的吗?如果我确实必须使用braintree-web,我是否还需要在index.html中包含这些2个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'
我究竟做错了什么?
由于Angular2是强类型的,因此您不能只使用Braintree提供的Javascript示例代码.您需要为所有这些功能定义类型.因此,尝试将braintree-web集成到Angular2中是第一个需要安装@ types/braintree-web的线索(在package.json中).这些不是官方的Braintree类型,而是来自http://definitelytyped.org/的开源贡献.我向Braintree支持求助,他们提到你可以在Angular2中使用他们的Javascript示例代码,但是你需要为每个参数指定一个类型.他们不能推荐使用absolutetyped的类型包,因为它不是他们自己的代码.
您不需要在文件顶部添加任何其他导入,但您确实需要index.html中包含的2个Braintree Javascript文件.