【问题标题】:Removing log from production mode is not working - react native从生产模式中删除日志不起作用-本机反应
【发布时间】:2019-11-05 02:34:54
【问题描述】:

React 原生文档声明 “你也可以使用这个 babel 插件来删除所有的 console.* 调用。你需要先用 npm i babel-plugin-transform-remove-console --save-dev 安装它,然后编辑你的 .babelrc 文件像这样的项目目录”

{
  "env": {
    "production": {
      "plugins": ["transform-remove-console"]
    }
  }
}

我没有找到 .babelrc 文件。因此,我在 babel.config.js 文件中进行了以下更改。

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  env: {
    production: {
      plugins: ["transform-remove-console"]
    }
  }
};

但这对我不起作用。当我在 Android Studio 中测试它们时会显示这些日志。这里出了什么问题?

【问题讨论】:

    标签: react-native


    【解决方案1】:

    记录的方法也不适用于我现有的项目,但它适用于新的测试项目。我尝试了许多依赖项升级,添加/删除 deps、插件等,试图找出问题的根源,但没有运气。所以最后我采用了这个解决方法:

        module.exports = {
          plugins: ['@babel/plugin-proposal-numeric-separator', 'lodash'].concat(
            process.env.NODE_ENV === 'production' ? ['transform-remove-console'] : []
          ),
          presets: [
            'module:metro-react-native-babel-preset',
            ['@babel/env', { targets: { node: 6 } }]
          ]
        };
    
    

    【讨论】:

      【解决方案2】:

      这应该有效(推荐方法

      const presets = ['module:metro-react-native-babel-preset'];
      const plugins = ['module:react-native-dotenv'];
      
      if (process.env.ENV === 'prod') {
        plugins.push('transform-remove-console');
      }
      
      module.exports = {presets, plugins};
      

      或者,如果您不想为此使用任何软件包,您可以这样做。 把它放在index.js

      if(!__DEV__){
         console.log = () => {}
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-27
        • 1970-01-01
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-03
        • 2012-05-05
        相关资源
        最近更新 更多