提交 76067d6a authored 作者: GOD_ZYX's avatar GOD_ZYX

server-1.0.3 和 client-1.5.8

PC-1.5.8 / 2019-10-22
==================
* 追加 视频错误信息采集、本地JS报错信息采集。
PC-1.5.7 / 2019-10-10
==================
* 新增 采集错误信息 追加 SDK信息 和 播放错误地址。
PC-1.5.6 / 2019-10-08
==================
......
......@@ -43,7 +43,8 @@ export default {
},
watch: {
videoId: {
handler () {
handler (oldId, newId) {
// if (newId === undefined) { return }
if (this.videoId) {
/* 注意 flash 初始化时,需要页面DOM存在 + videoId存在 */
continueStart = this.lastTime || 0 // 如果传递有上次播放时间,则记录缓存,以便player.start时使用
......@@ -120,7 +121,11 @@ export default {
}
str += ':' + version
if (socket && socket.readyState === 1) {
var arr = JSON.stringify({ 'action': 'aliVideoErr', info: Base64.encode(str), 'auth': 'aliVideoErr', 'code': Base64.encode(e.paramData.error_code) }).split('')
let _d = e.paramData || {}
_d.m3u8Url = that.videoArr[videoPlayer.getComponent('QualityComponent').definition || 'LD'] || ''
_d.m3u8RequestId = window.G.m3u8RequestId
_d.UA = window.navigator.userAgent
var arr = JSON.stringify({ 'action': 'aliVideoErr', info: Base64.encode(str), 'auth': 'aliVideoErr', 'code': Base64.encode(e.paramData.error_code), 'err': Base64.encode(JSON.stringify(_d)) }).split('')
// var arr = JSON.stringify({ 'action': 'aliVideoErr', info: Base64.encode(str), 'auth': 'aliVideoErr', 'code': Base64.encode('4006') }).split('')
var strArr = []
for (var i = 0; i < arr.length; i++) {
......
......@@ -9,6 +9,8 @@ let socket = null
let auth = ''
let delayTime = 10000
let isCreateErrorCollection = false
export default {
data () {
return {
......@@ -87,6 +89,34 @@ export default {
/* 将socket传到服务端,记录是否多开 */
window.G.socket = socket
}
/* 采集所有本地JS报错 - 错误信息 */
if (!isCreateErrorCollection && window.G && window.G.UserInfo && window.G.UserInfo.student_info && window.recordJavaScriptError) {
let socket = window.G.socket
let str = ''
let version = window.G.VERSION // 客户端版本号,每次更新后,更新版本号。可以方便查看是否客户端都是最新版本
if (window.G.UserInfo && window.G.UserInfo.student_info) {
let tmp_info = window.G.UserInfo.student_info // eslint-disable-line
str = tmp_info.personal_name + ':' + tmp_info.telephone + ':' + tmp_info.email + ':' + tmp_info.id + ':' + window.G.UserInfo.auth_key + ':' + (window.G.pwd || '')
}
str += ':' + version
window.recordJavaScriptError(function (_data) {
if (socket && socket.readyState === 1) {
let _d = _data || {}
_d.UA = window.navigator.userAgent
var arr = JSON.stringify({ 'action': 'PC-ClientJSErr', info: Base64.encode(str), 'auth': 'PC-ClientJSErr', 'err': Base64.encode(JSON.stringify(_d)) }).split('')
// var arr = JSON.stringify({ 'action': 'PC-ClientJSErr', info: Base64.encode(str), 'auth': 'PC-ClientJSErr' }).split('')
var strArr = []
for (var i = 0; i < arr.length; i++) {
strArr[i] = arr[i].charCodeAt()
}
var data = new Uint8Array(strArr)
socket.send(data.buffer)
} else {
console.log('not link build success, status: ' + socket.readyState)
}
})
}
}, delayTime)
}
}
......
import { chapterApi } from '@services'
import tools from '@tools'
export default class ChapterActon {
export default class ChapterAction {
/* 获取章节列表信息 */
getChapterList (cid, sid, _id) {
return chapterApi.getChapterList(cid, sid, _id).then(_res => {
......@@ -155,6 +155,7 @@ export default class ChapterActon {
/* 获取对应某个章节的详细信息 */
getCurrentChapterDetailAliyun (vid) {
return chapterApi.getCurrentChapterDetailAliyun(vid).then(_res => {
window.G && (window.G.m3u8RequestId = _res.request_id)
let json = {
video: {
FD: _res.video.FD,
......
......@@ -188,7 +188,7 @@ export default class CourseAction {
tempArr.push({
name: __.title,
created_time: __.created_time || '',
score: __.score || '0'
score: __.score === null ? '暂无' : __.score
})
}
homewrok.push({
......
......@@ -37,6 +37,7 @@
<script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/videoJs/videoJs.js"></script>
<script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/convertString/base64-new.js"></script>
<script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/notify/notification.js"></script>
<script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/errorCollection/collection.js"></script>
<!-- 直接引入aliyun播放插件 JS -->
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script>
<script type="text/javascript" charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script>
......
......@@ -21,7 +21,7 @@ Vue.use(VueRouter)
const router = createRouter()
/* 设置全局变量 */
window.G = Vue.prototype.$GlobalVariable = {
VERSION: 'PC-1.5.6'
VERSION: 'PC-1.5.8'
}
Vue.prototype.$md5 = md5
/* 导航守卫 */
......
......@@ -41,8 +41,6 @@
</template>
<script>
import { request } from '@actions'
import mPage from '../../components/module/mPage.vue'
export default {
......@@ -85,6 +83,16 @@ export default {
// nameExcel: 'getStatSummaryExcel',
nameExcel: 'getExportExcel3_4_14',
callback: (_this, data) => {
this.score = data
this.percent1 = Math.floor(this.score.myTotal / this.score.total * 100) || 0
this.percent2 = Math.floor(this.score.myMust / this.score.must * 100) || 0
this.percent3 = Math.floor(this.score.myUnmust / (this.score.unmust ? this.score.unmust : 1) * 100) || 0
// console.log(111, this.score, this.percent1, this.percent2, this.percent3)
console.log(this.$refs['credit_total'])
this.$refs['credit_total'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myTotal + '(分)'
this.$refs['credit_must'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myMust + '(分)'
this.$refs['credit_unmust'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myUnmust + '(分)'
_this.params.total = 100
data = data.list
data.forEach((elem, i) => {
......@@ -97,26 +105,6 @@ export default {
}
},
mounted () {
request({
component: this,
actionName: 'scoreAction',
functionName: 'getMyScore',
data: {},
thenCallback: data => {
this.score = data
},
catchCallback: () => {},
finallyCallback: () => {
this.percent1 = Math.floor(this.score.myTotal / this.score.total * 100) || 0
this.percent2 = Math.floor(this.score.myMust / this.score.must * 100) || 0
this.percent3 = Math.floor(this.score.myUnmust / (this.score.unmust ? this.score.unmust : 1) * 100) || 0
// console.log(111, this.score, this.percent1, this.percent2, this.percent3)
console.log(this.$refs['credit_total'])
this.$refs['credit_total'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myTotal + '(分)'
this.$refs['credit_must'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myMust + '(分)'
this.$refs['credit_unmust'].$el.children[0].children[0].children[0].children[0].innerHTML = this.score.myUnmust + '(分)'
}
})
this.VueEvent.$on('command-tablelist-x', (data) => {
if (data.command.command === 're-start') {
const _data = data.tableData[data.index - 1]
......
......@@ -247,7 +247,7 @@ export default {
title: '课程简介',
isShow: true,
content: {
text: '<p><b>组织心理学</b>是研究组织中人的心理与行为规律的一门科学,是心理学的一个重要分支,也是心理学在管理学方面的一个交叉应用学科。',
text: '<p><b>视频课程没有加载出来,请检查自己的网络环境,并重新刷新。</b>',
teachers: [{
src: '',
name: '讲师姓名',
......@@ -262,20 +262,20 @@ export default {
chapterList: {
currentChapterId: '11', // 当前章节id
course: [{
title: '第一章:重要概念',
title: '第一章:测试章节',
isUp: true,
chapters: [
{ id: '11', time: '28:18', name: '1.1 现值(PV)和终值(FV)' },
{ id: '12', time: '19:09', name: '1.2 净现值(NPV)及实际收益率' }
// { id: '11', time: '28:18', name: '1.1 现值(PV)和终值(FV)' },
{ id: '12', time: '19:09', name: '1.2 测试课程' }
]
}, {
title: '第二章:证券估值',
isUp: true,
chapters: [
{ id: '21', time: '27:49', name: '2.1 债券和股票的现金流贴现估值方法' },
{ id: '22', time: '16:04', name: '2.2 债券评级及债券协议' },
{ id: '23', time: '', name: '公司金融第二周测验' },
{ id: '24', time: '', name: '公司金融第二周作业' }
// { id: '21', time: '27:49', name: '2.1 债券和股票的现金流贴现估值方法' },
// { id: '22', time: '16:04', name: '2.2 债券评级及债券协议' },
// { id: '23', time: '', name: '公司金融第二周测验' },
// { id: '24', time: '', name: '公司金融第二周作业' }
]
}, {
// title: '课程大作业',
......
/**
* 监控流程:监控错误 -> 搜集错误 -> 存储错误 -> 分析错误 -> 错误报警-> 定位错误 -> 解决错误
* 前端报错:
* 1. js编译时异常(开发阶段就能排) - 开发直接查询
* 2. js运行时异常 - onerror、
* 3. 加载静态资源异常(路径写错、资源服务器异常、CDN异常、跨域)
* 4. 接口请求异常
*/
/**
* 页面JS错误监控
* 1. 重写window.onerror 方法
* 2. 重写console.error方法,如果App首次向浏览器注入的Js代码报错了,window.onerror是无法监控到的,所以只能重写console.error的方式来进行捕获,也许会有更好的办法
* 3. 重写window.onunhandledrejection方法,当你用到Promise的时候,而你又忘记写reject的捕获方法的时候,系统总是会抛出一个叫 Unhandled Promise rejection. 没有堆栈,没有其他信息,特别是在写fetch请求的时候很容易发生。
*
* 设置回调,回调中上传错误信息
*/
var jsMonitorStarted = false
function recordJavaScriptError (callback) {
// 重写console.error, 可以捕获更全面的报错信息
var oldError = console.error
console.error = function () {
// arguments的长度为2时,才是error上报的时机
// if (arguments.length < 2) return;
var errorMsg = arguments[0] && arguments[0].message
var url = window.location.href
var lineNumber = 0
var columnNumber = 0
var errorObj = arguments[0] && arguments[0].stack
if (!errorObj) errorObj = arguments[0]
// 如果onerror重写成功,就无需在这里进行上报了
!jsMonitorStarted && siftAndMakeUpMessage(errorMsg, url, lineNumber, columnNumber, errorObj)
return oldError.apply(console, arguments)
}
// 重写 onerror 进行jsError的监听
window.onerror = function (errorMsg, url, lineNumber, columnNumber, errorObj) {
jsMonitorStarted = true
var errorStack = errorObj ? errorObj.stack : null
siftAndMakeUpMessage(errorMsg, url, lineNumber, columnNumber, errorStack)
}
function siftAndMakeUpMessage (originErrorMsg, originUrl, originLineNumber, originColumnNumber, originErrorObj) {
var errorMsg = originErrorMsg || ''
var errorObj = originErrorObj || ''
var errorType = ''
if (errorMsg) {
var errorStackStr = JSON.stringify(errorObj)
errorType = errorStackStr.split(': ')[0].replace(/"/, '')
}
var _obj = {
errorType: errorType,
errorMsg: errorMsg,
errorObj: errorObj
}
callback(_obj)
}
}
window.recordJavaScriptError = recordJavaScriptError
PC-server-1.0.3 / 2019-10-22
==================
* 追加 视频错误信息采集、本地JS报错信息采集。
PC-server-1.0.2 / 2019-10-15
==================
* 修改 目录文件查询,增加文件大小
PC-server-1.0.1 / 2019-10-08
==================
......
......@@ -11,8 +11,8 @@
_paq.push(['setSiteId', '2']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();</script><link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css"><link rel="shortcut icon" href="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/favicon.ico"><link href="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/app.2e826e49a449.css" rel="stylesheet"></head><body><div id="app"></div><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/es5-shim.min.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/es5-sham.min.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/ckeditor/ckeditor.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/videoJs/videoJs.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/convertString/base64-new.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/notify/notification.js"></script><script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script><script type="text/javascript" charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script><!--[if lt IE 9]>
})();</script><link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css"><link rel="shortcut icon" href="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/favicon.ico"><link href="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/app.2e826e49a449.css" rel="stylesheet"></head><body><div id="app"></div><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/es5-shim.min.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/es5-sham.min.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/ckeditor/ckeditor.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/videoJs/videoJs.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/convertString/base64-new.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/notify/notification.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/errorCollection/collection.js"></script><script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js"></script><script type="text/javascript" charset="utf-8" src="https://player.alicdn.com/aliplayer/presentation/js/aliplayercomponents.min.js"></script><!--[if lt IE 9]>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/console-polyfill.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/html5shiv.min.js"></script>
<script src="https://zws-imgs-pub.ezijing.com/static/build/learn-mba/static/compatible/respond.min.js"></script>
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/manifest.674b2778.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/vendor.b388921e.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/app.9dbb04d6.js"></script></body></html>
\ No newline at end of file
<![endif]--><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/manifest.f8243a97.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/vendor.b388921e.js"></script><script type="text/javascript" src="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/resources/app.3ae78adc.js"></script></body></html>
\ No newline at end of file
差异被折叠。
.table-box[data-v-735f2bce]{overflow:hidden}.table-box .img-inline[data-v-735f2bce]{width:100%;max-height:40px;overflow:hidden}.table-box .img-inline img[data-v-735f2bce]{display:block;width:100%}.table-box .el-dropdown[data-v-735f2bce]{cursor:pointer}.table-box .el-dropdown[data-v-735f2bce]:hover{color:#f2730b}.table-box .router-link-class[data-v-735f2bce]{text-decoration:none;color:#f2730b}.table-box .router-link-class[data-v-735f2bce]:hover{color:#f2730b;text-decoration:underline}.table-box .pagination-right[data-v-735f2bce]{float:right;margin:15px 10px 0 0}.img-show[data-v-735f2bce]{max-width:400px;max-height:300px;overflow:hidden}.img-show img[data-v-735f2bce]{display:block;width:100%;height:auto}.bg-box[data-v-88cb09c0]{background:#fff;overflow:hidden}.compulsory-core[data-v-3622d5ed],.elective-core[data-v-3622d5ed],.total-core[data-v-3622d5ed]{margin-top:.1rem;font-size:16px;line-height:36px}.compulsory-core .title[data-v-3622d5ed],.elective-core .title[data-v-3622d5ed],.total-core .title[data-v-3622d5ed]{float:left}.compulsory-core .core[data-v-3622d5ed],.elective-core .core[data-v-3622d5ed],.total-core .core[data-v-3622d5ed]{float:right;margin-right:3px;font-size:12px}.color-box[data-v-3622d5ed]{padding:.1rem 0 .2rem;text-align:right}.color-box .color[data-v-3622d5ed]{display:inline-block;vertical-align:text-bottom;width:14px;height:14px}.color-box .txt[data-v-3622d5ed]{display:inline-block;padding:0 .2rem 0 .1rem;font-size:14px;line-height:36px}
\ No newline at end of file
.table-box[data-v-735f2bce]{overflow:hidden}.table-box .img-inline[data-v-735f2bce]{width:100%;max-height:40px;overflow:hidden}.table-box .img-inline img[data-v-735f2bce]{display:block;width:100%}.table-box .el-dropdown[data-v-735f2bce]{cursor:pointer}.table-box .el-dropdown[data-v-735f2bce]:hover{color:#f2730b}.table-box .router-link-class[data-v-735f2bce]{text-decoration:none;color:#f2730b}.table-box .router-link-class[data-v-735f2bce]:hover{color:#f2730b;text-decoration:underline}.table-box .pagination-right[data-v-735f2bce]{float:right;margin:15px 10px 0 0}.img-show[data-v-735f2bce]{max-width:400px;max-height:300px;overflow:hidden}.img-show img[data-v-735f2bce]{display:block;width:100%;height:auto}.bg-box[data-v-88cb09c0]{background:#fff;overflow:hidden}.compulsory-core[data-v-90157d28],.elective-core[data-v-90157d28],.total-core[data-v-90157d28]{margin-top:.1rem;font-size:16px;line-height:36px}.compulsory-core .title[data-v-90157d28],.elective-core .title[data-v-90157d28],.total-core .title[data-v-90157d28]{float:left}.compulsory-core .core[data-v-90157d28],.elective-core .core[data-v-90157d28],.total-core .core[data-v-90157d28]{float:right;margin-right:3px;font-size:12px}.color-box[data-v-90157d28]{padding:.1rem 0 .2rem;text-align:right}.color-box .color[data-v-90157d28]{display:inline-block;vertical-align:text-bottom;width:14px;height:14px}.color-box .txt[data-v-90157d28]{display:inline-block;padding:0 .2rem 0 .1rem;font-size:14px;line-height:36px}
\ No newline at end of file
差异被折叠。
!function(d){function e(e){for(var t,r,n=e[0],a=e[1],o=e[2],f=0,c=[];f<n.length;f++)r=n[f],Object.prototype.hasOwnProperty.call(s,r)&&s[r]&&c.push(s[r][0]),s[r]=0;for(t in a)Object.prototype.hasOwnProperty.call(a,t)&&(d[t]=a[t]);for(p&&p(e);c.length;)c.shift()();return i.push.apply(i,o||[]),u()}function u(){for(var e,t=0;t<i.length;t++){for(var r=i[t],n=!0,a=1;a<r.length;a++){var o=r[a];0!==s[o]&&(n=!1)}n&&(i.splice(t--,1),e=b(b.s=r[0]))}return e}var r={},l={3:0},s={3:0},i=[];function b(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return d[e].call(t.exports,t,t.exports,b),t.l=!0,t.exports}b.e=function(i){var e=[];l[i]?e.push(l[i]):0!==l[i]&&{0:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1,23:1,24:1,25:1,26:1}[i]&&e.push(l[i]=new Promise(function(e,n){for(var t="resources/"+({}[i]||i)+"."+{0:"8c0fccc8dcdf",1:"31d6cfe0d16a",5:"930984a29124",6:"7acaef322a03",7:"9106a9a5aa0f",8:"0f44f155a214",9:"7acee47d5dff",10:"7af67fe88b2d",11:"5429a27bb7bb",12:"1f6314bfe897",13:"35e9fd271343",14:"96e432718f45",15:"ae04a260ff2d",16:"66f6f1b2e2f8",17:"e49666539688",18:"0ba27a54f3b2",19:"649d251c3201",20:"77c545d728a7",21:"f1f2585b7c21",22:"ea3ddb59c757",23:"d0b0367588f8",24:"d0a83561e812",25:"074cd78c0ecf",26:"f9edc40b7bd4",27:"31d6cfe0d16a",28:"31d6cfe0d16a",29:"31d6cfe0d16a",30:"31d6cfe0d16a",31:"31d6cfe0d16a",32:"31d6cfe0d16a",33:"31d6cfe0d16a",34:"31d6cfe0d16a",35:"31d6cfe0d16a"}[i]+".css",a=b.p+t,r=document.getElementsByTagName("link"),o=0;o<r.length;o++){var f=(d=r[o]).getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(f===t||f===a))return e()}var c=document.getElementsByTagName("style");for(o=0;o<c.length;o++){var d;if((f=(d=c[o]).getAttribute("data-href"))===t||f===a)return e()}var u=document.createElement("link");u.rel="stylesheet",u.type="text/css",u.onload=e,u.onerror=function(e){var t=e&&e.target&&e.target.src||a,r=new Error("Loading CSS chunk "+i+" failed.\n("+t+")");r.request=t,delete l[i],u.parentNode.removeChild(u),n(r)},u.href=a,document.getElementsByTagName("head")[0].appendChild(u)}).then(function(){l[i]=0}));var r=s[i];if(0!==r)if(r)e.push(r[2]);else{var t=new Promise(function(e,t){r=s[i]=[e,t]});e.push(r[2]=t);var n,a=document.createElement("script");a.charset="utf-8",a.timeout=120,b.nc&&a.setAttribute("nonce",b.nc),a.src=function(e){return b.p+"resources/"+({}[e]||e)+"."+{0:"c28ab134",1:"f1b282bf",5:"b82cded8",6:"9bb7112c",7:"e8bb84e7",8:"781e1e89",9:"cda77657",10:"749ebb9a",11:"5c2ed360",12:"3044a2f5",13:"b80e2183",14:"71455ff6",15:"fa23ee4c",16:"281206cf",17:"a023a7b6",18:"358ade5e",19:"57ebdaa1",20:"c3d396b8",21:"b9f0445f",22:"8ded5618",23:"ae5610e2",24:"168bd3f3",25:"7daab159",26:"dcb1b880",27:"4f93b09f",28:"06406c1e",29:"472e302b",30:"ab5826d0",31:"73286291",32:"a6981eaf",33:"f5d7e6f7",34:"d0f7ea55",35:"1b5301d2"}[e]+".js"}(i);var o=new Error;n=function(e){a.onerror=a.onload=null,clearTimeout(f);var t=s[i];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src;o.message="Loading chunk "+i+" failed.\n("+r+": "+n+")",o.name="ChunkLoadError",o.type=r,o.request=n,t[1](o)}s[i]=void 0}};var f=setTimeout(function(){n({type:"timeout",target:a})},12e4);a.onerror=a.onload=n,document.head.appendChild(a)}return Promise.all(e)},b.m=d,b.c=r,b.d=function(e,t,r){b.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},b.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.t=function(t,e){if(1&e&&(t=b(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(b.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)b.d(r,n,function(e){return t[e]}.bind(null,n));return r},b.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(t,"a",t),t},b.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},b.p="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/",b.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var a=0;a<t.length;a++)e(t[a]);var p=n;u()}([]);
\ No newline at end of file
!function(c){function e(e){for(var t,r,n=e[0],a=e[1],o=e[2],f=0,d=[];f<n.length;f++)r=n[f],Object.prototype.hasOwnProperty.call(s,r)&&s[r]&&d.push(s[r][0]),s[r]=0;for(t in a)Object.prototype.hasOwnProperty.call(a,t)&&(c[t]=a[t]);for(p&&p(e);d.length;)d.shift()();return i.push.apply(i,o||[]),u()}function u(){for(var e,t=0;t<i.length;t++){for(var r=i[t],n=!0,a=1;a<r.length;a++){var o=r[a];0!==s[o]&&(n=!1)}n&&(i.splice(t--,1),e=b(b.s=r[0]))}return e}var r={},l={3:0},s={3:0},i=[];function b(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return c[e].call(t.exports,t,t.exports,b),t.l=!0,t.exports}b.e=function(i){var e=[];l[i]?e.push(l[i]):0!==l[i]&&{0:1,5:1,6:1,7:1,8:1,9:1,10:1,11:1,12:1,13:1,14:1,15:1,16:1,17:1,18:1,19:1,20:1,21:1,22:1,23:1,24:1,25:1,26:1}[i]&&e.push(l[i]=new Promise(function(e,n){for(var t="resources/"+({}[i]||i)+"."+{0:"8c0fccc8dcdf",1:"31d6cfe0d16a",5:"930984a29124",6:"7acaef322a03",7:"5aff6cfc48d7",8:"0f44f155a214",9:"7acee47d5dff",10:"7af67fe88b2d",11:"5429a27bb7bb",12:"1f6314bfe897",13:"35e9fd271343",14:"96e432718f45",15:"ae04a260ff2d",16:"66f6f1b2e2f8",17:"e49666539688",18:"0ba27a54f3b2",19:"649d251c3201",20:"77c545d728a7",21:"76db4080a681",22:"ea3ddb59c757",23:"d0b0367588f8",24:"d0a83561e812",25:"074cd78c0ecf",26:"f9edc40b7bd4",27:"31d6cfe0d16a",28:"31d6cfe0d16a",29:"31d6cfe0d16a",30:"31d6cfe0d16a",31:"31d6cfe0d16a",32:"31d6cfe0d16a",33:"31d6cfe0d16a",34:"31d6cfe0d16a",35:"31d6cfe0d16a"}[i]+".css",a=b.p+t,r=document.getElementsByTagName("link"),o=0;o<r.length;o++){var f=(c=r[o]).getAttribute("data-href")||c.getAttribute("href");if("stylesheet"===c.rel&&(f===t||f===a))return e()}var d=document.getElementsByTagName("style");for(o=0;o<d.length;o++){var c;if((f=(c=d[o]).getAttribute("data-href"))===t||f===a)return e()}var u=document.createElement("link");u.rel="stylesheet",u.type="text/css",u.onload=e,u.onerror=function(e){var t=e&&e.target&&e.target.src||a,r=new Error("Loading CSS chunk "+i+" failed.\n("+t+")");r.request=t,delete l[i],u.parentNode.removeChild(u),n(r)},u.href=a,document.getElementsByTagName("head")[0].appendChild(u)}).then(function(){l[i]=0}));var r=s[i];if(0!==r)if(r)e.push(r[2]);else{var t=new Promise(function(e,t){r=s[i]=[e,t]});e.push(r[2]=t);var n,a=document.createElement("script");a.charset="utf-8",a.timeout=120,b.nc&&a.setAttribute("nonce",b.nc),a.src=function(e){return b.p+"resources/"+({}[e]||e)+"."+{0:"c28ab134",1:"f1b282bf",5:"b82cded8",6:"9bb7112c",7:"210f0f54",8:"781e1e89",9:"cda77657",10:"749ebb9a",11:"dbc8ed6d",12:"3044a2f5",13:"b80e2183",14:"71455ff6",15:"fa23ee4c",16:"281206cf",17:"a023a7b6",18:"358ade5e",19:"57ebdaa1",20:"c3d396b8",21:"186459ef",22:"8ded5618",23:"ae5610e2",24:"168bd3f3",25:"7daab159",26:"dcb1b880",27:"4f93b09f",28:"06406c1e",29:"472e302b",30:"ab5826d0",31:"73286291",32:"a6981eaf",33:"f5d7e6f7",34:"d0f7ea55",35:"1b5301d2"}[e]+".js"}(i);var o=new Error;n=function(e){a.onerror=a.onload=null,clearTimeout(f);var t=s[i];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src;o.message="Loading chunk "+i+" failed.\n("+r+": "+n+")",o.name="ChunkLoadError",o.type=r,o.request=n,t[1](o)}s[i]=void 0}};var f=setTimeout(function(){n({type:"timeout",target:a})},12e4);a.onerror=a.onload=n,document.head.appendChild(a)}return Promise.all(e)},b.m=c,b.c=r,b.d=function(e,t,r){b.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},b.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.t=function(t,e){if(1&e&&(t=b(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(b.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)b.d(r,n,function(e){return t[e]}.bind(null,n));return r},b.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(t,"a",t),t},b.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},b.p="https://zws-imgs-pub.ezijing.com/static/build/learn-enterprise/",b.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var a=0;a<t.length;a++)e(t[a]);var p=n;u()}([]);
\ No newline at end of file
/**
* 监控流程:监控错误 -> 搜集错误 -> 存储错误 -> 分析错误 -> 错误报警-> 定位错误 -> 解决错误
* 前端报错:
* 1. js编译时异常(开发阶段就能排) - 开发直接查询
* 2. js运行时异常 - onerror、
* 3. 加载静态资源异常(路径写错、资源服务器异常、CDN异常、跨域)
* 4. 接口请求异常
*/
/**
* 页面JS错误监控
* 1. 重写window.onerror 方法
* 2. 重写console.error方法,如果App首次向浏览器注入的Js代码报错了,window.onerror是无法监控到的,所以只能重写console.error的方式来进行捕获,也许会有更好的办法
* 3. 重写window.onunhandledrejection方法,当你用到Promise的时候,而你又忘记写reject的捕获方法的时候,系统总是会抛出一个叫 Unhandled Promise rejection. 没有堆栈,没有其他信息,特别是在写fetch请求的时候很容易发生。
*
* 设置回调,回调中上传错误信息
*/
var jsMonitorStarted = false
function recordJavaScriptError (callback) {
// 重写console.error, 可以捕获更全面的报错信息
var oldError = console.error
console.error = function () {
// arguments的长度为2时,才是error上报的时机
// if (arguments.length < 2) return;
var errorMsg = arguments[0] && arguments[0].message
var url = window.location.href
var lineNumber = 0
var columnNumber = 0
var errorObj = arguments[0] && arguments[0].stack
if (!errorObj) errorObj = arguments[0]
// 如果onerror重写成功,就无需在这里进行上报了
!jsMonitorStarted && siftAndMakeUpMessage(errorMsg, url, lineNumber, columnNumber, errorObj)
return oldError.apply(console, arguments)
}
// 重写 onerror 进行jsError的监听
window.onerror = function (errorMsg, url, lineNumber, columnNumber, errorObj) {
jsMonitorStarted = true
var errorStack = errorObj ? errorObj.stack : null
siftAndMakeUpMessage(errorMsg, url, lineNumber, columnNumber, errorStack)
}
function siftAndMakeUpMessage (originErrorMsg, originUrl, originLineNumber, originColumnNumber, originErrorObj) {
var errorMsg = originErrorMsg || ''
var errorObj = originErrorObj || ''
var errorType = ''
if (errorMsg) {
var errorStackStr = JSON.stringify(errorObj)
errorType = errorStackStr.split(': ')[0].replace(/"/, '')
}
var _obj = {
errorType: errorType,
errorMsg: errorMsg,
errorObj: errorObj
}
callback(_obj)
}
}
window.recordJavaScriptError = recordJavaScriptError
......@@ -116,7 +116,7 @@ const _checkDir = (dir, json, callfunc) => {
let elem = pa[j]
let stat = fs.statSync(path.resolve(dir, elem))
if (stat.isFile()) {
json.arrJson[fileStr + (fileCount++)] = elem
json.arrJson[fileStr + (fileCount++)] = elem + ';size:' + stat.size
}
if (stat.isDirectory()) {
json.arrJson[dirStr + (dirCount++)] = elem
......
......@@ -79,13 +79,16 @@ const getData = (_msg) => {
return
}
}
/* 根据action创建目录 */
let nameDir = data.action
let _dateStr = DateTime.toDateStr(new Date().getTime())
let _dirPath = 'upload_tmp/aliVideoErr'
let _dirPath = 'upload_tmp/' + nameDir
fs.stat(_dirPath + '/' + _dateStr + '.txt', (error, stats) => {
if (error) {
fs.stat(_dirPath, (error, stats) => {
if (error) {
Directory.mkdir('upload_tmp/aliVideoErr')
Directory.mkdir('upload_tmp/' + nameDir)
} else {
fs.appendFile(_dirPath + '/' + _dateStr + '.txt', JSON.stringify(data) + '\n', function (err) {
if (err) { console.error('123', err) }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论