nodejsの組み込みデバッガを使用して、サーバーサイド開発を行う
nodejsで、サーバーサイド開発を行う際に、変数とかの中身を調べるために、console.log()
で毎回出力していたが、何かと不便。
調べてみたところ、node-inspector
というライブラリを入れると、ブラウザのデバッグツールでデバックできるというので試したところ、下記のエラーが出て使えない。
/usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:111
cb(error, NM[0].ref);
TypeError: Cannot read property 'ref' of undefined
同じようにはまってる人の質疑応答があったので読んでいたら、最後にnode自体に同等の機能が組み込まれたから、それ使えって書いてあった。
使い方
最初使い方がよくわからなかったので、記録を残す。
今、sailsを使っているので、それを使った時の設定方法なども併せて記載する。
バージョン
nodejs: v6.7.0
sails: 0.12.9
sailsを適当にセットアップ
とりあえず、局所的にsailsが動くように設定とインストール。よくわからない場合やグローバルに入れたい場合は、調べればすぐ出るので、それで入れる。
PATH=./node_modules/.bin:$PATH
typeset -U path
npm install sails
sails new inspect_test
cd inspect_test
rm -rf node_modules
npm install
アプリケーションを作成
とりあえず、コントローラーを作って、アクセスできるように設定する。
コード中に、debugger;
と入れると、そこがブレークポイントになる。
sails generate controller hoge
sed -i -e "/};/i,'/hoge': { controller: 'HogeController', action: 'index' }" config/routes.js
sed -i -e "/};/iindex: function(req, res) {debugger; res.send('hogehaoge')}" api/controllers/HogeController.js
echo 'module.exports = {port:9000}' > config/local.js
起動
inspectのポート番号は指定しなければ、デフォルトが使用される。
node --inspect=9001 app.js
アクセス
起動時に下記のようなURLが表示されるので、localhost部分をサーバーのIPなどに変更して、chrome
のアドレス欄に入れ、アクセスするとデバッグツールが表示される。
chrome-devtools://devtools/remote/serve_file/@xxxxxxxxxxxxxx/inspector.html?experiments=true&v8only=true&ws=localhost:9001/node
成功すれば、node
のコンソールに下記のメッセージが表示される。
Debugger attached.
あとは、どのブラウザでも良いので、アプリケーションにアクセスすると、debugger;
と入れたところで処理が止まり、コードがデバッグツールに表示される。もちろん、変数内を見たり、ステップ実行なども可能。
http://localhost:9000/hoge
foreverを設定する
開発時は、コード変更のたびに、アプリケーションを再起動する必要がある。forever
を使用すると、変更したら勝手に再起動するので、楽になるので入れる。デバッガの設定もする。
インストール&設定
npm install forever
cat << EOF > .foreverignore
**/.tmp/**
assets/**
views/**/*.ejs
node_modules/**
.idea/**
.git/**
EOF
起動
node
にオプションを渡したい場合は、-c
でnode
コマンドごと再設定する。
forever -c 'node --inspect=9001' -w app.js
Author And Source
この問題について(nodejsの組み込みデバッガを使用して、サーバーサイド開発を行う), 我々は、より多くの情報をここで見つけました https://qiita.com/minanon/items/2f6c348645c7bd7c9172著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .