方法一:
if (process.env.NODE_ENV == 'production') {
var logDebug = false;
console.log = (function (oriLogFunc) {
return function () {
if (logDebug) {
oriLogFunc.apply(this, arguments);
}
}
})(console.log);
document.addEventListener("contextmenu", function () {
window.event.returnValue = false;
return false;
})
}
方法二:
重寫console.log方法,使其失去 輸出能力
這個最直接有效,用vue框架的話放在main.js中或者index.html中即可。多頁面的話可以放在一個全局js中。缺點:有時候捕獲的錯誤是想打印出來的,結果也被屏蔽了。
console.log = function () {};
改進版
var log = console.log; // 不屏蔽
var log1 = function () {}; // 屏蔽
console.log = function () {
if(arguments[0] instanceof Error){
log(...arguments);
}else{
log1(...arguments);
}
}
開發的時候可以改成這樣,先將console.log賦值給log變量,後面使用的時候用log輸出,上線的時候只需要將log函數改寫成一個空函數就可以了。而上線後像仍需要打印的用console.log輸出。這樣就可以有選擇的屏蔽和輸出了
let log = console.log; // 平時開發用這個,寫法簡單,上線時替換成下一行就屏蔽掉了
// let log = function () {}; // 上線時改成這個屏蔽輸出
// 例如:
log("暫時打印使用這個函數,寫法簡單,後期還能屏蔽掉");
console.log("不想屏蔽的輸出,例如捕獲的錯誤等");