【问题标题】:How to clear/disable minor and warnings console log error? [duplicate]如何清除/禁用次要和警告控制台日志错误? [复制]
【发布时间】:2017-04-27 22:30:32
【问题描述】:

我正在使用 Webpack 和 React。经过数周的 React 开发和多个第三方库的实现,我在检查员的控制台中显示了许多警告错误,但它们在运行时不会影响我的应用程序。

这些错误只是客户端错误。

但是,如果网站公开,我不希望这些错误显示给其他用户。

那么如何防止任何检查员的控制台显示警告错误呢?我刚刚在 Facebook 上查看,发现 Facebook 刚刚禁用了检查器并显示了一条自定义消息。

我只是想防止使用 JavaScript 在控制台日志中自动打印警告消息。

我已经尝试过console.clear(),但它似乎只适用于 Firefox。我需要更全球化的东西。

【问题讨论】:

    标签: javascript reactjs console webpack


    【解决方案1】:

    首先,您应该解决这些警告而不是隐藏它们。但是如果你想隐藏生产中的所有警告,你需要使用生产版本的 React 或者在你的 webpack 配置中将环境设置为生产”。

    这可以通过使用DefinePlugin 插件来实现。本质上,该插件所做的是将所有 process.env.NODE_ENV 实例替换为 production,这将阻止 React 将错误打印到控制台。

       plugins: [
          new webpack.optimize.OccurenceOrderPlugin(),
          new webpack.DefinePlugin({
             'process.env.NODE_ENV': '"production"',
          }),
          new webpack.optimize.UglifyJsPlugin({ compress: {warnings: false} }),
          new webpack.optimize.DedupePlugin(),
       ],
    

    在这里,我们还使用 UglifyJsPlugin 来摆脱我们库中的所有代码。 React 库中的死代码示例:

    if (process.env.NODE_ENV == 'development') {
      console.warning('...')
    }
    

    由于我们将process.env.NODE_ENV 设置为production,因此代码将永远不会执行并且可以从我们的构建中完全消除。

    【讨论】:

    • process.env.NODE_ENV 设置为'development' 时,您确定所有OP 使用的库都只记录错误吗?
    • React 确实如此,所有其他流行的 React 库都遵循这个标准。
    【解决方案2】:

    您可以覆盖console 方法以使其无操作。只需确保在任何其他代码之前运行此代码即可。

    console.log = console.warn = console.error = () => {};
    
    // Look ma, no error!
    console.error('Something bad happened.');

    但是,最好修复这些错误而不是隐藏它们。即使看起来一切正常,也可能存在一些仅在某些特定条件下可见的错误。

    【讨论】:

    • 这是一个非常糟糕的主意,它会阻止您使用任何这些方法。
    • @bman 是的,但这就是 OP 的要求。
    • 不是真的!他真正需要的是使警告保持沉默。请参阅我的答案,了解让他们沉默的正确方法。
    • @Gothdo 感谢您的提示。但是,如上所述,我需要对任何人隐藏警告,并且仅供开发人员访问。
    • 您可以像const w = console.warn;一样保存控制台功能,以便以后恢复。我发现这对于消除嘈杂的第 3 方脚本非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2019-08-05
    • 2020-04-01
    • 2014-02-28
    • 2015-10-14
    • 1970-01-01
    相关资源
    最近更新 更多