美文网首页
一条console引发的"血案"

一条console引发的"血案"

作者: 北暖37 | 来源:发表于2020-09-02 09:40 被阅读0次

周二发布了后台,周三下午就有bug接踵而至。

经过排查,很快找到了问题的原因:是因为我在写的过程中写了一句console语句,但是我们的系统放到了不同的后台,有的后台不存在这个字段,所以就导致console语句报错,然后不继续执行。

简单的错误,严重的后果,然后我就想到,在开发过程中,我们肯定会需要通过console来看一些字段的值,从而进行更好的判断,从而console语句越写越多,在最后发布的时候,就懒得一个一个去进行删除或者注释,这就需要一个方法来对console的打印进行控制

以Vue框架为例

方案一:利用babel-plugin-transform-remove-console

// 先安装
npm install --save babel-plugin-transform-remove-console

// 在.babel.js中引入
if (process.env.NODE_ENV === 'production') {
// 如果是生产环境,则自动清理掉打印的日志,但保留error 与 warn
  prodPlugin.push([
    'transform-remove-console',
    {
      // 保留 console.error 与 console.warn
      exclude: ['error', 'warn']
    }
  ])
}

方案二:利用webpack插件

webpack4之前

module.exports = {
    optimization: {
      minimizer: [
        new UglifyJsPlugin({
          uglifyOptions: {
            output: { // 删除注释
              comments: false
            },
            //生产环境自动删除console
            compress: {
              //warnings: false, // 若打包错误,则注释这行
              drop_debugger: true,  //清除 debugger 语句
              drop_console: true,   //清除console语句
              pure_funcs: ['console.log']
            }
          },
          sourceMap: false,
          parallel: true
        })
      ]
    }
}

webpack4之后,通过插件(terser-webpack-plugin)来实现该功能

// 安装
npm install terser-webpack-plugin

// 使用
const TerserPlugin = require('terser-webpack-plugin')

module.exports = {
  optimization: {
    minimizer: [
      new TerserPlugin({
        sourceMap: true, // Must be set to true if using source-maps in production
        terserOptions: {
          compress: {
            drop_console: true,
          },
        },
      }),
    ],
  },

无框架项目

原生html和js项目中,可以通过提出公共的打方法

// 抽离出一个js文件
// 引入该方法,需要打印时执行该方法
function judgeConsole (msg) {
  // 通过控制该变量,来判断是否需要打印;上线前置为false
  let isConsole = true
  if (isConsole) {
    console.log(msg)
  }
}

相关文章

  • 一条console引发的"血案"

    周二发布了后台,周三下午就有bug接踵而至。 经过排查,很快找到了问题的原因:是因为我在写的过程中写了一句cons...

  • Insert on duplicate 死锁分析,和解决方法

    一条Insert on duplicate引发的血案

  • iOS土味儿讲义(一)--一个Button引发的血案

    iOS土味儿讲义(一)--一个Button引发的血案 iOS土味儿讲义(一)--一个Button引发的血案

  • 一条裙子引发的血案

    每一个人,认知是有限的,同样一个东西,我们不可能全知,也就是说看到的感觉到的都不一样; 每一个人,性格、年龄、背景...

  • 一条裙子引发的血案

    昨天刚说过曾经在乎现在无所谓的7月马上过完,现世报立即来了,和Wayne因为我裙子的长短再微信上大吵一架,他向我说...

  • 一条消息引发的血案

    好可怕。 想不到给老妈发的一条消息,最后竟然被教导了1个半小时!!!! 不过最后的结局,教导中,我知道了自己的最大...

  • 一条评论引发的血案

    该文章由作者整理,版权属知乎和原答主,如有侵权,即删。中国(内地)最值得敬佩的信息技术公司是哪一家?Robert ...

  • 一条金鱼引发的血案

    最近,由于一件事情,博主心灵受到了极大的伤害。久久不能平静。起因是因为一条金鱼。 博主一直深爱着各种小动物,小猫小...

  • 一条内裤引发的血案

    菲菲的爸爸是个特别不注重自己形象的人,比如,他上完厕所可能会前门不关,他刷碗会有油污留在上面,他去扫地可能仍然有许...

  • #引发的血案

    注重细节!今天因为js代码中少了一个“#”耽误了两个小时才找到原因,以后要吸取教训,注重细节!#

网友评论

      本文标题:一条console引发的"血案"

      本文链接:https://www.haomeiwen.com/subject/hjyisktx.html