【小程序踩坑系列2】 vConsole 將已清除掉的log記錄再次打印出來,形成代碼沒有生效或者微信掃碼錯誤的錯覺

做者: 蔣歡

這是一個開發工具 vConole 帶來的問題。雖然不大,可是若是你早已習慣 chrome 開發面板的使用方法,則很容易在開發中致使誤解。前端

問題:vConsole 打開後點擊 clear 清除log,再次操做小程序。發現會將以前清除掉的log再次打印出來,而後纔打印新的log,形成代碼沒有生效的錯覺。

一、首先,解釋下什麼是 vConole
vConsole 是騰訊開發的一個輕量、可拓展、針對手機網頁的前端開發者調試面板, 具體介紹見請:vConsole官方倉庫git

二、小程序裏的 vConole 工具
微信小程序在開發過程當中也可使用 vConole 輔助在手機端進行調試,具體方法是:點擊開發版小程序又上角 ... ,以後選擇 打開調試 ,以下圖所示。github

圖1 vConsole使用介紹

三、在使用小程序開發工具中,因爲 log 記錄過多,咱們在一次調試過程當中可能會使用 clear 來清除log,事實上 clear 沒有像 chrome 的 「clear console」 同樣,作到真正的清除 log。而是將 log 清除後緩存了起來。待你下次刷新頁面時會將兩次 log 一塊兒打印出來。咱們在調試 「小程序掃碼bug」 時就遇到了該問題。chrome

舉例:

a、咱們調試時,會在 onload 內將該函數參數打出,讀取微信掃碼的數據。小程序

onLoad(this: IndexPage, p) {  
        console.log('打印p參數打印p參數打印p參數打印p參數打印p參數打印p參數');  
        console.log(p);  
    }
複製代碼

b、當咱們第一次掃碼調試時,針對商戶 「巴蜀傳香」 打出的log結果如圖所示,以後咱們點擊 clear 清除了調試工具的 log 記錄並退出。微信小程序

圖2 第一次掃描二維碼獲得的結果

c、當咱們第二次掃不一樣的二維碼進入小程序時,預期onload的參數會變化。然而發現店鋪變了,但掃描的結果沒有改變(實際上二維碼變了,店鋪與log也應該會改變)。緩存

圖3 第二次掃描二維碼獲得的上次緩存結果

d、事實上,當你將 log 記錄繼續往下滑會發現,新的 log 記錄也已打印出來。說明即便你以前點擊了 clear ,新的 log 也會由於緩存再次打印出來。bash

圖4 第二次掃描二維碼獲得的實際結果

環境:

IOS 和 安卓 都可穩定復現。微信

緣由:

vConsole 會將已經 「clear」 的緩存再次打印出來。ide

微信反饋:「這是小程序底層的一個問題,正在修復中,不是vConsole的問題哈。」

解決方案:

調試的時候須要多日後翻一下,找到各次對應的掃碼 log 記錄。

風險:

開發階段,可能由於 log 判斷錯誤,而形成誤解。

相關文章
相關標籤/搜索