调试你的nodejs
背景
最近在研究 jscodeshift ,是一个AST的工具,学习过程中发现调试非常不方便,运行jscodeshift需要以下命令:
1 | // --dry指的是不改变源文件,-p指的是打印出输出,方便调试 |
这种用cli的命令不像是启动一个express服务器,可以通过node bin/www来启动。直接在index.js里打断点并不起作用。(如下图)
解决办法一(用vscode 调试 - launch模式)
用vscode的debug
1 | // launch.json |
在下拉框中运行,即可进入打断点的位置(如下图)
调试Egg程序
1 | { |
解决方法二(用chrome调试 - node –inspect-brk)
在package.json中,增加debug命令
1
2
3"scripts": {
"debug": "node --inspect-brk ./node_modules/jscodeshift/bin/jscodeshift.sh -t index.js ./file.js --dry -p --run-in-band"
},命令行运行
1
npm run debug
控制台输出如下
1
2
3
4> node --inspect-brk ./node_modules/jscodeshift/bin/jscodeshift.sh -t index.js ./file.js --dry -p --run-in-band
Debugger listening on ws://127.0.0.1:9229/c4ae2261-fe88-40b2-a6cd-c1f182b59c94
For help, see: https://nodejs.org/en/docs/inspector打开chrome,访问 chrome://inspect/#devices , 点击 Open dedicated DevTools for Node , 如下图
此时会自动打开控制台,默认从程序刚开始执行就进行断点(./node_modules/jscodeshift/bin/jscodeshift.sh) 如下图
如果不想一步一步跟随程序来进入需要断点的地方,你可以用 debugger 命令来打断点,如下图
总结
以上两种方式可以通过控制台或chrome来进行nodejs程序的调试,比起增加console.log的方式来看方便了不少。后续所有调试nodejs都可按照这两种方式来调试。
有问题欢迎随时留言,或到主页点击右下角的对话icon与我沟通。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jianqiao0313!
评论