Visual Studio CodeでNode.jsのアプリをデバッグ
先の記事の続きでプログラム作成を続けていた。するとlaunch.jsonの設定にまだまだ深いところがあったので追加の内容を調べていた。
process.stdout.writeを使ったところでlaunch.jsonに新たな設定が必要になった。
今回デバッグするアプリケーションは
2つのファイルで構成
スクリプトの内容は後に回すとして
まずlaunch.jsonでconfigurationsに追加が必要なのは
"console": "integratedTerminal",
であった。
これを追加しておかないとprocess.stdout.writeで出力した内容がデバッグの表示に現れない。
なぜこうなるのかは いまひとつよくわかっていない。
一つ目はserv.js
const GetNtp = require('./GetNtp') var getNtp = new GetNtp(); var before = new Date(); var task = new Promise(function(resolve, reject) { getNtp.getNetworkTime('ntp.nict.jp', 123, resolve, reject) }) task.then(function(value) { var after = new Date() console.log('Computer tick: ' + (before.valueOf() + after.valueOf()) / 2 + ' ms') process.stdout.write('ntp.nict.jp tick: ' + value.valueOf() + ' ms\n') process.stdout.write('Difference: ' + ((before.valueOf() + after.valueOf()) / 2 - value.valueOf()) + ' ms') process.stdout.write(' ±: ' + (after.valueOf() - before.valueOf()) + ' ms\n') })
2つ目のファイルGetNtp.jsは以下のようになっている
var GetNtp = function() { this.ntpClient = require('ntp-client'); } GetNtp.prototype.getNetworkTime = function(uri, port, resolve, reject) { this.ntpClient.getNetworkTime(uri, port, function(err, date) { if(err) { console.error(err) if (typeof reject !== "undefined") reject() return } if (typeof resolve !== "undefined") resolve(date) }); } module.exports = GetNtp
その前にこのサンプルではntp-clientを使って時刻を取得し自PCの時刻と差をms出力をしている。
作業フォルダでnpm init -yを実行してnpm install -D ntp-clientを実行しておく必要があることは言うまでもない。