Byteball開発者向け情報wiki - デバッグ環境を構築する(Mac,node-inspector)
本記事の方法は非推奨ですが、記録として残しています。
ツールなどにこだわりがなければ
こちら
http://byteball.memo.wiki/d/%A5%C7%A5%D0%A5%C3%A5%...
の方法を推奨します。

この記事はMac上でnode.jsの開発とデバッグを行う手順を解説します。
下記のコマンドは全てMac上で行います
Windows環境での検証は行ってないので注意してください。


[注意]
著者にて構築後、sqlite3内のモジュール読み込み時にバージョンの食い違いで必ずエラーがでる不具合に遭遇しています。
現在は対策を追記しているので、恐らく起きないと思われますが、検証は出来てないのでご注意ください。

Macにnode.jsを導入

node-inspectorを安定して使うために、バージョンを6に指定してインストールします。
git clone git://github.com/creationix/nvm.git ~/.nvm
source ~/.nvm/nvm.sh

インストール可能なnode.jsのバージョンを表示

nvm ls-remote

確認時はv6.12.3が6の最新版だったのでこれを指定

nvm install v6.12.3

node-inspectorの導入

npm install -g node-inspector

Finkのインストール(apt-getの有効化)

初期設定だとapt-getが使えないので
こちらのサイトを参考にaptを導入。

参照先が落ちた場合に備えて同じ内容をこの中に残しておきます。

ソースコード・モジュール環境の構築

本ウィキの環境構築ページを参考に任意の場所にモジュールの導入とコード展開を行います。
http://byteball.memo.wiki/d/%B3%AB%C8%AF%B4%C4%B6%...
[追記]
上記でapt-geをt実行する際にnodeとsqlite3はインストール対象から除外してください。
入れてしまうとバージョンの食い違いが起こる可能性があります。

*通常のMacユーザーにはroot権限がないのでapt-getコマンドの頭にsudoをつける必要があります。
もしくはユーザーにroot権限を付与してください。

以下必要箇所の抜粋

ディレクトリ移動

ターミナルを起動して、
自分がソースコードを展開したい場所まで移動してください。

必須モジュールの取得

下記のコマンドを実行して最初に必要なモジュールを取得します。
apt-get update;apt-get install -y nodejs npm nodejs node-sqlite3 git logrotate vim;update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10;

1行ずつ実行する場合はこちら


メール送信が必要な場合この中の設定もしておく必要があります

readmeファイル作成

以下のコマンドを入力して、作成したファイルに説明文を加えてください。
特にプログラムには影響しないので「a」とだけ入れても問題ありません。
vim README.md

npmインストール準備

npm経由で必要なモジュールを取得する準備をします。
npm init
ガイドに従って入力していってください。
その後、作成されたファイルをさらに書き換えます。
vim package.json
dependenciesを以下のように変更してください。
*ない場合は"license": "ISC"の後にカンマを入れて"dependencies"を追加してください。
"dependencies": {
    "headless-byteball": "git+https://github.com/byteball/headless-byteball.git",
    "byteballcore": "git+https://github.com/byteball/byteballcore.git",
    "bitcore-lib": "^0.13.14",
    "bitcore-mnemonic": "~1.0.0",
    "json-rpc2": "^1.0.2"
  }
npmのモジュールを一括取得
npm install

コンフィグファイルの作成

以下のコマンドでコンフィグファイルを作成
vim conf.js
以下の内容を書き込んで保存する。
/*jslint node: true */
"use strict";

//exports.port = 6611;
//exports.myUrl = 'wss://mydomain.com/bb';
exports.bServeAsHub = false;
exports.bLight = false;


exports.storage = 'sqlite';


exports.hub = 'byteball.org/bb';
exports.deviceName = 'Headless';
//ランダムな文字列。ペアリングコードの一部になる
exports.permanent_pairing_secret = '0000';
//チャットを許可するデバイスのアドレスを設定
exports.control_addresses = [''];
exports.payout_address = 'WHERE THE MONEY CAN BE SENT TO';
exports.KEYS_FILENAME = 'keys.json';

// where logs are written to (absolute path).  Default is log.txt in app data directory
//exports.LOG_FILENAME = '/dev/null';

// consolidate unspent outputs when there are too many of them.  Value of 0 means do not try to consolidate
exports.MAX_UNSPENT_OUTPUTS = 0;
exports.CONSOLIDATION_INTERVAL = 3600*1000;

// this is for runnining RPC service only, see play/rpc_service.js
exports.rpcInterface = '127.0.0.1';
exports.rpcPort = '6332';

console.log('finished headless conf');

デバッグ画面を表示するChromeの準備

以下のリンクから普通にchromeをインストールしてください。
https://www.google.co.jp/chrome/browser/desktop/in...

デバッグ実行

node --inspect-brk あなたのソースファイル名.js

ここまでの設定がうまく言っていれば以下のようなURLが生成されるので
chromeにコピペして開くとデバッグが可能となる。
chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/04969c6c-a3c8-4d65-9787-9f8f864ab660

この中の方法は他サイトでは記載があるが正常に動作しないため隠してあります。

ターミナル起動毎に実行

source ~/.nvm/nvm.sh
*bashに書き込んで置いて自動かする方法もあるようだが現在調査中。

参考