LoginSignup
3
2

More than 5 years have passed since last update.

nodejsの組み込みデバッガを使用して、サーバーサイド開発を行う

Posted at

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にオプションを渡したい場合は、-cnodeコマンドごと再設定する。

forever -c 'node --inspect=9001' -w app.js
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2