javascript - 有没有办法将所有控制台输出记录到 HTML 页面?
问题描述
我正在开发一个 Electron 应用程序来运行我的 discord.js 机器人,并且我想将可能抛出到控制台的任何错误记录到我制作的 div 的 html 中。我让它适用于和之类的东西console.log
,console.error
但 discord.js 使用throw new Error
. 有什么方法可以从这些类型的错误中提取错误内容,以便将其打印到我的新“控制台”?
这是我做这console.log
件事的方式:
console.log = function(message) {
document.getElementById('console-text').innerHTML += `<p class="console-output">${message}<p>`
};
解决方案
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
。
推荐阅读
- java - 从另一个位置运行 executeBatch()
- android - 使用 SQlite 数据填充实现进度条
- java - servlet 执行引发异常 - NoClassDefFound 错误
- reactjs - 在 react、sinon 或 jest 中测试计时器
- excel - 使用 Excel 公式替换部分字符串
- android - 关于谷歌最新架构指南的 MVVM 模式,如何将数据(通知)从存储库 calss 传递到 ModelView 类
- video - 视频压缩
- stylish - 如何在引导程序中滚动导航栏视图之前和之后创建时尚?
- java-io - 如何在java中使用用户名创建子文件夹
- android - android studio 中的 Intent Activity 错误。(自动改变背景)