首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确配置与webpack-4在开发模式下的反应

如何正确配置与webpack-4在开发模式下的反应
EN

Stack Overflow用户
提问于 2018-03-15 18:46:28
回答 2查看 784关注 0票数 0

当我在NodeJs React应用程序中使用webpack和babel时,我得到了一个自动生成的错误代码:

代码语言:javascript
复制
Uncaught ReferenceError: Invalid left-hand side in assignment

下面是由babel/webpack自动生成的代码中的冒犯行:

代码语言:javascript
复制
"development" = 'development'; // bundle.js line 17933

如果我从自动生成的代码中手动删除上面的一行,那么错误就会消失。但由于明显的原因,这不是一个好的解决办法。

我使用webpack 4,如package.json的摘录所示

代码语言:javascript
复制
"babel-loader": "^7.1.4",
"babel-preset-stage-0": "^6.24.1",
"webpack": "^4.1.1",
"webpack-cli": "^2.0.12"

这是我的webpack.config.js

代码语言:javascript
复制
module.exports = {
    entry: './source/main.js',
    output: {
        path: __dirname,
        filename: 'public/javascripts/bundle.js'
    },
    devtool: "inline-source-map",
    module: {
        rules: [
            {
                test: /.js?$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader",
                    options: {
                        presets: ['react', 'stage-0']
                    }
                }
            }
        ]
    }
};

我构建了这样的bundle.js

代码语言:javascript
复制
node_modules/.bin/webpack --mode development

如果保持不变,但使用webpack 3.11.0并卸载webpack-cli并构建bundle.js,则错误将消失,如下所示:

代码语言:javascript
复制
node_modules/.bin/webpack

webpack.config.js__.:最新的webpack 3.X版本支持webpack 4.X语法,如我的所示

详细信息:

代码语言:javascript
复制
$ node --version
v9.8.0
$ npm --version
5.7.1
EN

回答 2

Stack Overflow用户

发布于 2018-03-15 20:36:42

我要做的是从webpack.config.js模块导出一个函数。

导出函数时,将使用两个参数调用该函数:一个环境作为第一个参数(可以忽略它),另一个选项映射作为第二个参数。

您可以使用它将--mode作为选项传递给Webpack CLI,并使用它通过DefinePlugin定义process.env.NODE_ENV。这可能就是巴贝尔要找的。

就像这样:

代码语言:javascript
复制
const { DefinePlugin } = require('webpack');
...

module.exports = (env, options) => {
    ...

    plugins: [
        new DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify(options.mode)
        })
    ]
};
票数 0
EN

Stack Overflow用户

发布于 2020-06-04 10:48:00

您的代码中可能有这一行(或类似的)代码:

代码语言:javascript
复制
process.env.NODE_ENV = 'development';

在构建时,Webpack的DefinePlugin将用实际值代替process.env.NODE_ENV (在您的情况下是development),结果是:"development" = 'development';将抛出一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49307063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档