Tôi đã gặp vấn đề tương tự. Tôi tạo ra một ứng dụng văn phòng, nơi tôi không có một giao diện điều khiển gỡ lỗi cũng như các công cụ phát triển, vì vậy tôi không thể tìm ra nơi xảy ra lỗi.
Tôi đã tạo một thành phần (một lớp es6) đã thu tất cả tin nhắn console
, lưu thư vào một mảng riêng biệt và được gọi là hàm "thực" console
.
log(message) {
const msg = new Log(message);
this.pushMessage(msg);
this._target.log(message);
}
nơi Log
là một wrapper đơn giản với một message
và type
và this._target
là một tài liệu tham khảo trên window.console
. Vì vậy, tôi cũng làm như vậy với info
, warn
và error
.
Ngoài ra, tôi đã tạo phương thức handleThrownErrors(message, url, lineNumber)
để bắt ngoại lệ.
window.onerror = this.handleThrownErrors.bind(this);
Ít nhất tôi đã tạo một thể hiện của lớp (tôi gọi là LogCollector
) và nối nó vào cửa sổ.
window.logCollector = new LogCollector();
Bây giờ tôi đã tạo ra một thành phần phản ứng nhận cá thể logCollector (window.logCollector
) làm tài sản. Trong khoảng thời gian đều đặn, thành phần phản ứng sẽ kiểm tra các tin nhắn đã thu thập và hiển thị chúng trên màn hình.
componentDidMount() {
this.setInterval(this._forceUpdate, 500);
},
_forceUpdate() {
this.setState({update: !this.state.update});
}
this.setInterval()
là chức năng riêng mà chỉ cần gọi window.setInterval()
.
Và trong render()
phương pháp:
return (
<div class="console">
{this.props.logCollector.getMessages().map(this.createConsoleMessage)}
</div>
);
LƯU Ý: Điều quan trọng là để bao gồm các LogCollector
trước tất cả file khác.
LƯU Ý: Giải pháp trên là phiên bản rất đơn giản. Ví dụ: Bạn có thể cải thiện nó bằng cách thêm người nghe tùy chỉnh (tin nhắn), hoặc bắt gặp lỗi 404 Not found
(đối với tập lệnh js-script và css).
Điều này cần được bỏ phiếu nhiều hơn. Chính xác những gì tôi đang tìm kiếm. – Echiban
Hey, tôi đã thử mã này và điều này hoạt động trên firefox nhưng tôi chỉ nhận được "Script Error" trên chrome. Bất kỳ ý tưởng làm thế nào để giải quyết điều này? – JiN
@JiN Tôi đã gặp phải sự cố tương tự. Dường như ([xem tại đây] (https://blog.sentry.io/2016/05/17/what-is-script-error.html)) rằng thông báo "Lỗi Script" chung xảy ra khi có sự cố CORS . Tuy nhiên, tôi nhận được nó, ngay cả khi kịch bản của tôi dường như được tải trên cùng một tên miền, vì vậy ... – fraxture