如何记录反应window.onError错误到文件

时间:2019-07-10 17:16:13

标签: javascript reactjs

我正在尝试记录错误,并将其保存/记录到前端的文件中。

我有一个处理window.onError方法的模块

在React端称为myModule.onError()。从这里开始,如果它们是错误的,它将显示在console.log()中

enter image description here

如何将这个错误记录到文件中?

我尝试将多个日志记录库(例如winston,buyan,log4js等)与我的模块捆绑在一起,但找不到fs中的错误,而且还有更多错误。

这是我关于错误方法的窗口,我该怎么办才能将window.onError错误记录到文件中。我如何将其捆绑在模块中?

function onError(){
    const data = {};
    return window.onerror = ( msg, url,lineNo,columnNo, error) => {
        let string = msg.toLowerCase();
        let substring = 'script error';
        if (string.indexOf(substring) > -1) {
            alert('Script Error: See Browser Console for Detail');
        } 
        else {
            let message = [
                'Message: ' + msg,
                'URL: ' + url,
                'Line: ' + lineNo,
                'Column: ' + columnNo,
                'Error object: ' + JSON.stringify(error)
            ].join(' - ');
            const messageObj = {
                Message: msg,
                URL: url,
                Line: lineNo,
                Column: columnNo,
                ErrorObject: JSON.stringify(error)
            };
            const messObj = JSON.stringify(messageObj)
            console.log(messObj);
            // ourLogger.log('info',messObj);
            // maybe call an axios post passing in the error
            // axios.post('/clinet-log',{messObj} )
            //     .then( res => {
            //         res
            //     })
            console.log(messageObj);
            return messObj;
        }

   };
}

export function onErrorMain(){
    let onErrorinit = onError();
    return onErrorinit;
}

1 个答案:

答案 0 :(得分:1)

您无法在浏览器中使用fs模块,因为它是节点库
您所能做的就是:将HTTP请求从浏览器发送到服务器,然后使用fs

在服务器端保存文件

伪代码

/*
BE - BackEnd
FE - FrontEnd

BE: create backend api, something like http://examp.le/sendError
FE: override window.onError
FE: inside window.onError send request to backend
FE: jQuery.post('http://examp.le/sendError', { errorData: 'some error' })
BE: receive the data
BE: write to file and return result
FE: show result on page

*/