使用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
广告
将在 10 秒后关闭
bannerAds