2017-01-20 51 views
2

我正在嘗試使用Angular2的Braintree客戶端示例(https://developers.braintreepayments.com/start/hello-client/javascript/v3)。我對Angular2(和Javascript)非常陌生。braintree on Angular2

首先,我不確定是否應該在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中包含這2個js文件? braintree-web不包括它們嗎?

在我payment.component.ts文件,我複製並粘貼在布倫特裏客戶端代碼:

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): error TS2307: Cannot find module 'braintree-web/client'

我在做什麼錯?

+0

您是否在app.module.ts中註冊braintree模塊? http://stackoverflow.com/questions/40353886/trying-to-integrate-braintree-web-into-angular2 – freshbm

+0

謝謝。我注意到這個人添加了npm install @ types/braintree-web @ 3.0.1。我現在確實可以做些工作。到目前爲止,我發現我確實需要在index.html中包含js文件,而且我確實需要braintree包(除了類型)。但是......現在我在Braintree的示例代碼中遇到了麻煩。基本上,他們從服務器獲取一些對象,我嘗試寫入該類的臨時成員變量供以後使用:this.temp = hostedFieldsInstance。但是,當我這樣做時,我得到一個錯誤:Uncaught TypeError:無法讀取未定義(...)的屬性'temp'。有任何想法嗎? –

+0

@JennaS你是如何得到它的工作?我已經複製你所做的,但我仍然收到錯誤說'找不到模塊'braintree-web/client' – nareeboy

回答

5

由於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文件。

+0

任何機會,你可以告訴我,如果你試圖通過npm安裝,如下所示:https://developers.braintreepayments .com/guides/client-sdk/setup/javascript/v3#npm - 如果有,運氣好嗎?如果可能的話,我寧願避免直接從Braintree的服務器中包含JS。 –

+0

沒有試過這個。當我嘗試這樣做時,我不認爲我看到了這個選項。我會給它一個鏡頭。謝謝! –

+0

爲什麼它的價值,這是現在我正在做的,直接使用braintree角度(包括類型等)。我通過npm安裝。似乎工作到目前爲止! –