首页 > 解决方案 > 有没有办法将所有控制台输出记录到 HTML 页面?

问题描述

我正在开发一个 Electron 应用程序来运行我的 discord.js 机器人,并且我想将可能抛出到控制台的任何错误记录到我制作的 div 的 html 中。我让它适用于和之类的东西console.logconsole.error但 discord.js 使用throw new Error. 有什么方法可以从这些类型的错误中提取错误内容,以便将其打印到我的新“控制台”?

这是我做这console.log件事的方式:

console.log = function(message) {
    document.getElementById('console-text').innerHTML += `<p class="console-output">${message}<p>`
  };

标签: javascriptnode.jselectron

解决方案


error您可以在窗口中添加一个侦听器:

const container = document.getElementById('console-text');
window.addEventListener('error', (error) => {
  const p = container.appendChild(document.createElement('p'));
  p.textContent = error.message;
  p.className = 'console-output';
});

throw new Error('foobar');
<div id="console-text"></div>

在 Node 中,同样的事情可以通过监听unhandledException事件来完成:

require('process').on('uncaughtException', (error) => {

我建议不要这样做

.innerHTML += `<p class="console-output">${message}<p>`

因为这可以允许任意代码执行。显式创建<p>元素并分配给它textContent


推荐阅读