使用Node.js的内置调试器来进行服务器端开发
在使用Node.js进行服务器端开发时,为了调查变量等的内容,我每次都使用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
我在阅读的时候,因为有其他人提出了类似的问题和答案,所以最后写道,由于将相同功能嵌入节点自身,所以可以使用它。
使用方法
最初因为不太了解如何使用,所以我进行记录。
现在我正在使用Sails,所以我会在记录中提到一些使用Sails的配置方法等。
版本 (Bānjīng)
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
如果成功,将在节点控制台中显示以下消息。
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