闯入console.log?

Break in console.log?

我的 node.js 测试代码中有一个令人讨厌的问题。在某处,某些东西使用 console.log 打印出一条错误消息(我认为)。我对日志中的混乱有点挑剔,所以我试图抓住它。我 100% 确定它不在我的代码中,它一定在我们正在使用的某个库中。

这让我想到了一个有趣的问题:是否可以在console.log中设置断点?我在 WebStorm IDE 工作,运行 在 node.js 4.4.3。

你可以尝试这样的事情。

process.on('uncaughtException', function(err) {
    console.log('Threw Exception: ' + err.stack);
});

您可以用一个自定义版本覆盖 console.log 来破坏调试器:

var _log = console.log.bind(console);

// es6
console.log = (...args) => {
  _log(...args);
  debugger;
}

// es5
console.log = function() {
  _log.apply(null, arguments);
  debugger;
}

如果您想 copy/paste 进入浏览器控制台进行路测(已在 Chrome 51、Safari 9.1 和 Firefox 46 中验证),这里有一行:

var _log = console.log.bind(console); console.log = function() { _log.apply(null, arguments); debugger; }