我正在尝试记录错误,并将其保存/记录到前端的文件中。
我有一个处理window.onError方法的模块
在React端称为myModule.onError()
。从这里开始,如果它们是错误的,它将显示在console.log()中
如何将这个错误记录到文件中?
我尝试将多个日志记录库(例如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;
}
答案 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
*/