我试图让Braintree客户端示例(https://developers.braintreepayments.com/start/hello-client/javascript/v3)处理Angular2。我对Angular2(和Javascript)非常陌生。
首先,我不确定我是否应该添加" braintree-web":" ^ 3.6.3"在package.json的依赖项下。或者添加
<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中包含这些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:找不到模块&#39; braintree-web / client&#39;
我做错了什么?
答案 0 :(得分:6)
由于Angular2是强类型的,因此您不能只使用Braintree提供的Javascript示例代码。您需要为所有这些功能定义类型。所以Trying to integrate braintree-web into Angular2是您需要安装@ types / braintree-web的第一个线索(在package.json中)。这些不是官方的Braintree类型,而是来自http://definitelytyped.org/的开源贡献。我向Braintree支持求助,他们提到你可以在Angular2中使用他们的Javascript示例代码,但是你需要为每个参数指定一个类型。他们无法推荐绝对式的类型包,因为它不是他们自己的代码。
您不需要在文件顶部添加任何导入,但您确实需要index.html中包含的2个Braintree Javascript文件。