提交 207cb272 编写于 作者: d-u-a's avatar d-u-a

update: error reporting

上级 44e31c52
const {
normalizePath,
isInHBuilderX
} = require('@dcloudio/uni-cli-shared/lib/util');
} = require('@dcloudio/uni-cli-shared/lib/util')
class ErrorReport {
static get instance() {
class ErrorReport {
static get instance () {
if (this._instance == null) {
this._instance = new ErrorReport();
this._instance = new ErrorReport()
}
return this._instance;
return this._instance
}
constructor() {
this._instance = null;
this._https = null;
this._crypto = null;
this._cacheList = [];
this._UNI_INPUT_DIR_REG = new RegExp(normalizePath(process.env.UNI_INPUT_DIR), 'g');
this._UNI_CLI_CONTEXT_REG = new RegExp(normalizePath(process.env.UNI_CLI_CONTEXT), 'g');
constructor () {
this._instance = null
this._https = null
this._crypto = null
this._cacheList = []
this._UNI_INPUT_DIR_REG = new RegExp(normalizePath(process.env.UNI_INPUT_DIR), 'g')
this._UNI_CLI_CONTEXT_REG = new RegExp(normalizePath(process.env.UNI_CLI_CONTEXT), 'g')
}
get https() {
get https () {
if (this._https == null) {
this._https = require('https');
this._https = require('https')
}
return this._https;
return this._https
}
report(type, err) {
report (type, err) {
if (!this._shouldReport(err)) {
return;
return
}
err = normalizePath(err)
......@@ -44,22 +43,22 @@ class ErrorReport {
hx: isInHBuilderX ? 1 : 0,
et: type,
em: err
});
})
var hash = this._getMD5(data);
var hash = this._getMD5(data)
if (this._cacheList.includes(hash)) {
return;
return
}
this._cacheList.push(hash);
this._cacheList.push(hash)
setTimeout(() => {
this._doReport(data);
}, 10);
this._doReport(data)
}, 10)
}
_doReport(data) {
_doReport (data) {
const req = this.https.request({
hostname: this.HOST,
port: 443,
......@@ -69,12 +68,12 @@ class ErrorReport {
'Content-Type': 'application/json',
'Content-Length': data.length
}
});
req.write(data);
req.end();
})
req.write(data)
req.end()
}
_shouldReport(err = '') {
_shouldReport (err = '') {
try {
const errMsg = err.toString()
......@@ -94,25 +93,25 @@ class ErrorReport {
return false
}
_getMD5(str) {
return this.crypto.createHash('md5').update(str).digest('hex');
_getMD5 (str) {
return this.crypto.createHash('md5').update(str).digest('hex')
}
get crypto() {
get crypto () {
if (this._crypto == null) {
this._crypto = require('crypto');
this._crypto = require('crypto')
}
return this._crypto;
return this._crypto
}
}
Object.assign(ErrorReport.prototype, {
HOST: '96f0e031-f37a-48ef-84c7-2023f6360c0a.bspapp.com',
PATH: '/http/uni-app-compiler',
EXCLUDE_ERROR_LIST: ['uni-app-compiler']
});
})
function report(type, err) {
ErrorReport.instance.report(type, err);
function report (type, err) {
ErrorReport.instance.report(type, err)
}
global.__error_reporting__ = report
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册