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

ignore debugger; statements in Node.js, during debug session

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

debugger;

声明。有时我调试,实际上我只想跳过所有调试器;语句并仅继续我为调试会话选择的手动设置的断点,是否有一些偶然的设置 Node.js 来做到这一点?

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

这可以通过 chrome 开发工具来完成。

你可以这样做:

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。

有选项disable/enable所有断点,chrome会记住你之前设置的所有断点。

请检查:--inspect了解更多信息。

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

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

快速而肮脏的方法(它用于调试,所以它真的很好)是在 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

开始节点

在此处使用全局变量,以便它可以是来自调试器 repl 的 enabled/disabled 或 chrome 的 repl(如果使用 --inspect 进行调试)。

从技术上讲,require.extensions 已弃用,但不会被删除,它可以按预期工作。