背景:
在开发中打的log可能会忘记删除导致发上生产版本后有log打出,为了保证生产环境不受这种影响,所以在生产环境时自动屏蔽console;
原理:
在项目初始化的时候判断环境,如果是生产环境则把console的指向替换;
实现:
在main.js里插入以下代码
// 屏蔽console
(function shieldConsole() {
if (process.env.NODE_ENV == "production") {
Reflect.ownKeys(console).map(key => {
if (typeof console[key] == "function") {
console[key] = () => {};
}
});
}
return;
})();
- console是symbol类型所以需要用Object.getOwnPropertySymbols()、Reflect.ownKeys() 遍历
- 注意使用Reflect.ownKeys()遍历后会带一个symbol内置对象
- 把console的所有方法都改空函数就不会返回了