現象描述
代碼執行 fetch 請求,請求返回的數據默認是 JSON 化的字符串了,開發者使用 JSON 對象解析,這是正常邏輯;
但是一旦遇到服務器端權限校驗失敗等問題時,會返回類似 503 的 HTML 頁面,此時 JSON 解析肯定就會失敗。
解決方法
1. 在每個JSON.parse() 的代碼執行處進行 try-catch 包圍,處理出錯情況
2. 在 app.ux 中提前代理 JSON.parse(),使用 try-catch 包圍,待異常出現時埋點數據,或者返回默認正常數據替代。
推薦方案2,示例代碼如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
export
function
parseProxy () {
const rawParse = JSON.parse
JSON.parse =
function
(str, defaults) {
try
{
return
rawParse(str)
}
catch
(err) {
console.error(`JSON解析失敗:${str}, ${err.stack}`)
return
defaults
}
}
}
|
原文鏈接:https://developer.huawei.com/...
原作者:Mayism
