環(huán)境 django 1.10.6
緣起
今天接到一個(gè)任務(wù)――解決終端滿屏日志中的無用錯(cuò)誤。 django 會(huì)盡可能給你準(zhǔn)確報(bào)出錯(cuò)誤位置,但是一些復(fù)雜,深層次的錯(cuò)誤它自帶的錯(cuò)誤日志有些不足了,日志多但是卻無效。
過程
對(duì)于后臺(tái)日志太多而無用,我則直接轉(zhuǎn)到瀏覽器查看控制臺(tái)訪問情況,得到如下提示

直接去后臺(tái)匹配這個(gè)錯(cuò)誤:undefined。根據(jù)這個(gè)錯(cuò)誤完全定位不到具體哪兒出了問題。我調(diào)試跟蹤發(fā)現(xiàn)進(jìn)入到一個(gè)特定的頁面會(huì)一定出現(xiàn)這個(gè)問題,而如果換一個(gè)頁面則不出現(xiàn)錯(cuò)誤。 得此,我進(jìn)而對(duì)這個(gè)頁面進(jìn)行跟蹤,我嘗試替換頁面的做法,最終定位到一段 html 代碼就會(huì)引起該錯(cuò)誤:
<img src="/static/msite/image/qrcode_for_gh.jpg">
我很詫異一個(gè)img標(biāo)簽會(huì)引起后端訪問一個(gè)錯(cuò)誤的地址,但是卻完全不知道原因。 我嘗試替換這個(gè)img的src,結(jié)果依然還是相同錯(cuò)誤。
在用firebug調(diào)試下發(fā)現(xiàn)問題,上圖:

根據(jù)調(diào)用堆棧的提示,去追尋相關(guān)js如下圖

最終才知道這個(gè)圖片地址被惰性加載了,然后在惰性加載后,img的src變成 undefined引發(fā)后端訪問一個(gè)不存在的地址。
解決
在使用前,處理一下 src 值
function imageLoaded(obj, src) { var img = new Image(); if(src===undefined){ src=''; } img.onload = function() { obj.src = src; }; img.src = src;}新聞熱點(diǎn)
疑難解答
圖片精選