忽略调试器;调试会话期间Node.js中的语句

时间:2016-10-25 00:38:49

标签: node.js debugging breakpoints

我有一个代码库,我有很多

debugger;

语句。有时我调试,我实际上只是想跳过所有的调试器;语句并继续只为我为调试会话选择的手动设置断点,Node.js是否有机会设置断点?

换句话说,我想将debugger;语句视为长期占位符,但对于某些调试会话,我想忽略这些长期占位符。

3 个答案:

答案 0 :(得分:6)

可以使用chrome devtools完成。

你可以这样做:

node --inspect --debug-brk index.js

将生成如下内容:

chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=localhost:9229/9c2e4f37-4c3a-4477-b8da-2399c5d9819e

只需将其复制并粘贴到Chrome上即可。

可以选择禁用/启用所有断点,chrome会记住您之前设置的所有断点。

请查看:--inspect了解详情。

答案 1 :(得分:3)

我过去使用的一个技巧就是使用babel删除调试器语句:

请参阅: https://www.npmjs.com/package/babel-plugin-remove-debugger

答案 2 :(得分:3)

快速而肮脏的方式(它用于调试,实际上很好)是在scripts / debugger.js中粘贴类似下面的脚本

require.extensions['.js'] = function(module, filename) {
  var content = fs.readFileSync(filename, 'utf8').replace(/debugger/g, [
    '(function() {',
    '  if (__debugger) {',
    '    debugger;',
    '  }',
    '})',
  ].join('\n'));

  module._compile(content, filename);
};

然后使用node -r ./scripts/debugger

启动节点

在此处使用全局变量,以便在使用--inspect进行调试时,可以从调试器repl或chrome的重新启用/禁用它。

技术上不推荐使用require.extensions,但它不会被删除,而且它可以按预期工作。