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

update: error reporting

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