その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行目で文法エラーがあることを指摘されています。
[php]// var module-name = require(‘path’);
var path = require(‘path’);[/php]
“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”メソッドが定義されていない」と指摘されています。
[php]
// var morgan = require(‘morgan’);
var logger = require(‘morgan’);
[/php]
“logger”はログを記録するメソッドです。ログを記録するモジュールは”morgan”に基づいて行いますので、4行目を確認しましょう。”morgan”という文字列がオブジェクト変数として使われていますので、メソッド名と合わせてオブジェクト変数の名前も”logger”に修正します。
“Hello World!”の削除
$ node app server starting...
2つのオブジェクト変数を修正し、アプリケーションを実行するととりあえずサーバーは動きます。
[php]
// resオブジェクトを使って、"Hello World!"を表示する
// app.get(‘/’, function (req, res) {
// res.send(‘Hello World from Braintree!’);
// });
[/php]
ですがブラウザで”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認証情報の入力
[php]
var BT_ENV = braintree.Environment.Sandbox,
BT_ID = "DUMMYID",
BT_PUB = "DUMMYPUBLIC",
BT_PRI = "DUMMYPRIVATE";
[/php]
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に続きます。