当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何调试通过命令行(cli)启动的节点应用程序,如forever或supervisor?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我熟悉调试我自己的节点应用程序(通常使用node-inspector).今天我想调试别人的程序.我试图用 supervisor 来追踪一个问题.所以我自然只是在命令调用中添加了一个–debug(或debug-brk),但是它将
我熟悉调试我自己的节点应用程序(通常使用node-inspector).今天我想调试别人的程序.我试图用 supervisor来追踪一个问题.所以我自然只是在命令调用中添加了一个–debug(或debug-brk),但是它将它传递给它正在监督的代码.

我已经尝试将调试器行添加到主管的js文件中,但是这不起作用(可能是因为当时没有连接调试器).这里有一点比赛 – 我需要启动调试器并在启动之后但在它从命令行处理其参数之前将其附加到管理程序进程.

我真正想要做的是停止管理程序并在它处理命令行参数之前对其进行调试.我怎样才能做到这一点?

我在开发 hexo博客时遇到了同样的问题.文档还不完整,所以我发现自己有时需要进行逆向工程.

基本的想法是,在Node.js中,甚至你的cli应用程序也只是你暴露给操作系统命令行界面的普通节点应用程序.在Unix系统上,您使用此行:

#!/usr/bin/env node

允许环境执行脚本.

许多基于cli的节点应用程序试图坚持使用-g选项全局安装它们.

npm install -g node-inspector

我个人更喜欢尽可能多地控制我的开发环境,所以我更喜欢打破一些约定并检查我的node_modules到源代码控制,同时通过删除-g来安装我可以在本地安装的所有内容.

npm install node-inspector

现在你不必这样做才能使这个工作,我只是描述这个设置,因为它与你的问题有关.当我运行node-inspector时,我不能简单地使用:

node-inspector

相反,我必须从我的项目中明确地调用它.我通过在node_modules / .bin文件夹中执行符号链接来执行此操作:

node_modules/.bin/node-inspector

现在我正在像你一样运行node-inspector.

接下来我需要做的就是在debug中启动cli进程,并可选择将params传递给它:

node --debug-brk node_modules/.bin/hexo generate

注意我在这里显式调用符号链接而不是简单地:

node --debug-brk hexo generate

如果我尝试上面的行,我会收到一个错误:“错误:无法找到模块”.

我希望这有帮助.

网友评论