栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

您当前正在使用NODE_ENV ==='production'之外的缩小代码。这意味着您正在运行较慢的Redux开发版本

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

您当前正在使用NODE_ENV ==='production'之外的缩小代码。这意味着您正在运行较慢的Redux开发版本

Webpack 4更新

如果您使用的webpack> =
4,则可以设置

mode
production
。这将自动定义
NODE_ENV
为,
production
而无需使用define插件。https://webpack.js.org/concepts/mode/#mode-
production

似乎webpack已将

-p
标记更新为自动定义
process.env.NODE_ENV
production
捆绑代码中的标记(感谢@
x-yuri指出这一点)。因此,尽管现在不再需要下面的答案,但我将其保留在那里以供参考,并作为webpack定义插件如何工作的解释。

原始答案+说明

TLDR :使用webpack define插件设置

process.env.NODE_ENV
为正式版。

长版:

React,Redux和许多其他JS库包括额外的验证和错误日志记录,使开发变得更加容易。但是,您显然不希望在生产环境中使用此功能,因为它们会使您的代码库更大,更慢。这些检查通常包裹在如下语句中:

if (process.env.NODE_ENV !== 'production') {  // do development checks}

您收到的错误是Redux告诉您,尽管您已缩小代码,

process.env.NODE_ENV
但未设置为
production
,因此开发检查仍在进行中。要解决此问题,您将需要使用webpack
define插件设置
process.env.NODE_ENV
为正式版。

var webpack = require('webpack');module.exports = {  entry: [    './src/index.js'  ],  output: {    path: __dirname,    publicPath: '/',    filename: 'bundle.js'  },  module: {    loaders: [{      exclude: /node_modules/,      loader: 'babel',      query: {        presets: ['react', 'es2015', 'stage-1']      }    }]  },  resolve: {    extensions: ['', '.js', '.jsx']  },  devServer: {    historyApiFallback: true,    contentbase: './'  },  plugins: [    new webpack.DefinePlugin({      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)    }),  ]};

请注意,我在

process.env.NODE_ENV
运行webpack时将为您定义的值定义为。因此,要生成生产包,您将需要运行
NODE_ENV=productionwebpack -p
,而不仅仅是运行
webpack-p
。这将替换的任何实例
process.env.NODE_ENV
production
你的包。因此,我上面显示的支票现在看起来像这样:

if ('production' !== 'production') {  // do development checks}

缩小器足够聪明,可以检测到if语句中的代码永远不会发生,并将其从生产包中删除。因此,您将两全其美:更好的开发体验,并且生产包中没有多余的代码:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号