BraintreeSDKを利用してPayPal ExpressCheckoutを実装する その11(エラーの確認とコードの修正)

その10(新しいタブで開く)までの記事でBraintreeSDKを利用してPayPal ExpressCeckoutを実装するためのアカウントの取得やコードの記述を行いました。現時点でアプリケーションがどこまで動くか確認をして、エラーなどが発生したら修正を行っていきましょう。
コードの修正
$ pwd /Users/myusername/Braintreetest $ node app
とりあえずアプリケーションを動かしてみましょう。”node app.js”で動かすことができますが、”js”は省略できます。
オブジェクト変数”module-name”の修正
$ node app /Users/myusername/Braintreetest/app.js:3 var module-name = require('path'); ^ SyntaxError: Unexpected token - at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3
アプリケーションを実行するとまずapp.jsの3行目で文法エラーがあることを指摘されています。
// var module-name = require('path'); var path = require('path');
“module-name”というオブジェクト変数の名前を”path”に変更しましょう。13行目で使われている”app.set”メソッドの第二引数と合わせる必要があります。
オブジェクト変数”morgan”の修正
$ node app /Users/myusername/Braintreetest/app.js:24 app.use(logger('dev')); ^ ReferenceError: logger is not defined at Object.(/Users/HiroshiFukui/Braintreetest/app.js:24:9) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18)
オブジェクト変数を”path”に修正した上で、もう一度アプリケーションを実行してみましょう。またしてもエラーが発生しました。「24行目の”logger”メソッドが定義されていない」と指摘されています。
// var morgan = require('morgan'); var logger = require('morgan');
“logger”はログを記録するメソッドです。ログを記録するモジュールは”morgan”に基づいて行いますので、4行目を確認しましょう。”morgan”という文字列がオブジェクト変数として使われていますので、メソッド名と合わせてオブジェクト変数の名前も”logger”に修正します。
“Hello World!”の削除
$ node app server starting...
2つのオブジェクト変数を修正し、アプリケーションを実行するととりあえずサーバーは動きます。
// resオブジェクトを使って、"Hello World!"を表示する // app.get('/', function (req, res) { // res.send('Hello World from Braintree!'); // });
ですがブラウザで”localhost:3000″にアクセスすると、”Hello World from Braintree!”が表示されます。Expressが動いているかどうか、お試しで書いたお約束のコードですが不要なので削除します。詳細はその3(新しいタブで開く)の記事を参照してください。
Braintreeサーバーの認証情報を記入
$ node app server starting... /Users/HiroshiFukui/Braintreetest/routes/index.js:23 res.render('index', { clientToken: response.clientToken }); ^ TypeError: Cannot read property 'clientToken' of undefined at /Users/HiroshiFukui/Braintreetest/routes/index.js:23:48 at null._onTimeout (/Users/HiroshiFukui/Braintreetest/node_modules/braintree/node_modules/@braintree/wrap-promise/lib/deferred.js:9:10) at Timer.listOnTimeout (timers.js:92:15)
再度、アプリケーションを実行してみましょう。とりあえずはサーバーは動いているように見えますが、しばらくすると”clientTokenが定義されていない”と叱られます。
access_Tokenの記述
ブラウザから”localhost:3000″にアクセスすると、再び画面が表示されます。このエラーは”clientToken”を作成するための”access_Token”が入力されていないために発生するエラーです。したがってPayPal developerで取得したaccess_Tokenを入力しましょう。詳細はその6(新しいタブで開く)の記事を参考にしてください
なおaccess_Tokenは秘密の文字列なのでGitHub上ではダミーの文字列を使用しています。
BraintreeのAPI認証情報の入力
var BT_ENV = braintree.Environment.Sandbox, BT_ID = "DUMMYID", BT_PUB = "DUMMYPUBLIC", BT_PRI = "DUMMYPRIVATE";
access_Tokenの入力が完了したら、合わせてBraintreeのAPI認証情報(BT_ID,BT_PUB,BT_PRI)も入力しましょう。
views以下のディレクトリがないというエラーについて
ここまでの作業を経てブラウザから”localhost:3000″にアクセスすると、今度は”viewsディレクトリとその下に必要なファイルがない(Error: Failed to lookup view “error” in views directory )”と叱られます。ですが説明しだすと長くなりますので、続きは次回ということで。今回の変更内容についてGitHubにUPしています。その12(新しいタブで開く)に続きます。
- API決済
- BrainntreeサーバーのAPI認証情報
- BraintreeSDK
- BraintreeSDKNodeDemo
- Express
- Express4.x
- index.js
- JavaScript
- localhost:3000
- node app
- Node.js
- Payment Gateway
- PayPal
- PayPal developer
- PayPal ExpressCeckout
- ReferenceError: logger is not defined
- SyntaxError: Unexpected token
- TypeError: Cannot read property 'clientToken' of undefined
- 決済プラットフォーム
- 複数決済手段サービス