如何清除/禁用次要和警告控制台日志错误?

Joh*_*ohn 0 javascript console reactjs webpack

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

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

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

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

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

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

Mic*_*ski 5

您可以覆盖这些console方法以使它们不起作用。只要确保先运行此代码,然后再运行其他任何代码即可。

console.log = console.warn = console.error = () => {};

// Look ma, no error!
console.error('Something bad happened.');
Run Code Online (Sandbox Code Playgroud)

但是,最好修复这些错误而不是隐藏它们。即使一切似乎都正常,但仍有一些错误仅在某些特定条件下才可见。

  • 并不真地!他真正需要的是让警告静音。请参阅我的答案,了解让他们沉默的正确方法。 (3认同)
  • 这是一个非常糟糕的主意,它阻止您使用任何这些方法。 (2认同)

bma*_*man 4

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

这可以通过使用DefinePlugin插件来实现。本质上,这个插件的作用是替换所有实例,process.env.NODE_ENVproduction阻止 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(),
   ],
Run Code Online (Sandbox Code Playgroud)

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

if (process.env.NODE_ENV == 'development') {
  console.warning('...')
}
Run Code Online (Sandbox Code Playgroud)

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