Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-app
提交
f2cf8752
U
uni-app
项目概览
DCloud
/
uni-app
4 个月 前同步成功
通知
731
Star
38707
Fork
3642
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
7
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
7
Issue
7
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f2cf8752
编写于
5月 09, 2020
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(cli): add error reporting
上级
7e9664ef
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
84 addition
and
8 deletion
+84
-8
packages/vue-cli-plugin-uni/lib/chain-webpack.js
packages/vue-cli-plugin-uni/lib/chain-webpack.js
+15
-1
packages/vue-cli-plugin-uni/lib/env.js
packages/vue-cli-plugin-uni/lib/env.js
+2
-0
packages/vue-cli-plugin-uni/lib/error-reporting.js
packages/vue-cli-plugin-uni/lib/error-reporting.js
+44
-0
packages/vue-cli-plugin-uni/util/on-errors.js
packages/vue-cli-plugin-uni/util/on-errors.js
+7
-1
packages/vue-cli-plugin-uni/util/stringify.js
packages/vue-cli-plugin-uni/util/stringify.js
+16
-6
未找到文件。
packages/vue-cli-plugin-uni/lib/chain-webpack.js
浏览文件 @
f2cf8752
...
...
@@ -104,6 +104,20 @@ module.exports = function chainWebpack (platformOptions, vueOptions, api) {
if
(
runByHBuilderX
)
{
// 由 HBuilderX 运行时,移除进度,错误
webpackConfig
.
plugins
.
delete
(
'
progress
'
)
webpackConfig
.
plugins
.
delete
(
'
friendly-errors
'
)
}
else
{
webpackConfig
.
plugin
(
'
friendly-errors
'
)
.
tap
(
args
=>
{
if
(
global
.
__error_reporting__
)
{
args
[
0
].
onErrors
=
function
(
severity
,
errors
)
{
if
(
severity
!==
'
error
'
)
{
return
}
const
error
=
errors
[
0
]
global
.
__error_reporting__
&&
global
.
__error_reporting__
(
error
.
name
,
error
.
message
||
''
)
}
}
return
args
})
}
if
(
process
.
env
.
BUILD_ENV
===
'
ali-ide
'
)
{
webpackConfig
.
plugins
.
delete
(
'
progress
'
)
...
...
packages/vue-cli-plugin-uni/lib/env.js
浏览文件 @
f2cf8752
...
...
@@ -3,6 +3,8 @@ const path = require('path')
const
mkdirp
=
require
(
'
mkdirp
'
)
const
loaderUtils
=
require
(
'
loader-utils
'
)
require
(
'
./error-reporting
'
)
const
hasOwnProperty
=
Object
.
prototype
.
hasOwnProperty
function
hasOwn
(
obj
,
key
)
{
...
...
packages/vue-cli-plugin-uni/lib/error-reporting.js
0 → 100644
浏览文件 @
f2cf8752
function
shouldReport
(
err
=
''
)
{
try
{
const
errMsg
=
err
.
toString
()
// 目前简单的上报逻辑为:错误信息中包含@dcloudio包名
if
(
errMsg
.
includes
(
'
@dcloudio
'
)
&&
!
errMsg
.
includes
(
'
Errors compiling template
'
)
)
{
return
true
}
}
catch
(
e
)
{}
return
false
}
// err:string|Error
function
report
(
type
,
err
)
{
if
(
shouldReport
(
err
))
{
console
.
log
(
'
Error Reporting...
'
)
// const https = require('https')
// const data = ...
// const req = https.request({
// hostname: '',
// port: 8080,
// path: '/todos',
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json',
// 'Content-Length': data.length
// }
// })
// req.write(data)
// req.end()
}
}
global
.
__error_reporting__
=
report
process
.
on
(
'
unhandledRejection
'
,
(
reason
,
p
)
=>
{
global
.
__error_reporting__
&&
global
.
__error_reporting__
(
'
unhandledRejection
'
,
reason
)
})
.
on
(
'
uncaughtException
'
,
err
=>
{
global
.
__error_reporting__
&&
global
.
__error_reporting__
(
'
uncaughtException
'
,
err
)
})
packages/vue-cli-plugin-uni/util/on-errors.js
浏览文件 @
f2cf8752
const
stringify
=
require
(
'
./stringify
'
)
module
.
exports
=
function
(
errors
)
{
console
.
error
(
stringify
(
errors
))
const
errMsg
=
stringify
(
errors
,
'
error
'
)
if
(
typeof
errMsg
!==
'
string
'
)
{
global
.
__error_reporting__
&&
global
.
__error_reporting__
(
errMsg
.
type
,
errMsg
.
msg
)
console
.
error
(
errMsg
.
msg
)
}
else
{
console
.
error
(
errMsg
)
}
}
packages/vue-cli-plugin-uni/util/stringify.js
浏览文件 @
f2cf8752
...
...
@@ -2,16 +2,17 @@ const path = require('path')
const
formatErrors
=
require
(
'
./format-errors
'
)
module
.
exports
=
function
stringify
(
errors
)
{
return
(
Array
.
from
(
module
.
exports
=
function
stringify
(
errors
,
type
)
{
let
hasUnknownErr
=
false
const
msg
=
Array
.
from
(
new
Set
(
errors
.
map
(
err
=>
{
const
formatError
=
formatErrors
[
err
.
name
]
if
(
formatError
)
{
const
result
=
formatError
(
err
)
if
(
result
)
{
if
(
typeof
result
===
'
string
'
)
{
hasUnknownErr
=
true
return
result
}
else
{
if
(
err
.
module
.
resource
)
{
...
...
@@ -26,11 +27,20 @@ module.exports = function stringify (errors) {
}
else
if
(
result
===
false
)
{
return
''
// skip
}
}
else
{
hasUnknownErr
=
true
}
return
err
.
message
})
)
)
.
filter
(
msg
=>
!!
msg
)
.
join
(
'
\n
'
))
).
filter
(
msg
=>
!!
msg
).
join
(
'
\n
'
)
if
(
type
===
'
error
'
&&
hasUnknownErr
)
{
return
{
type
:
'
onErrors
'
,
msg
}
}
return
msg
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录