javascript - 错误 'NODE_ENV' 未定义 no-undef eslint

标签 javascript webpack webpack-2 eslint

使用 eslint 的 webpack 2 应用程序。

我正在使用 webpack 的 DefinePlugin 在编译时替换 NODE_ENV 变量。 我正在使用 eslint 进行代码格式化。

这就是我在 webpack.config.js 中定义要替换的变量的方式,

var plugins = [

    new webpack.DefinePlugin({
        NODE_ENV:JSON.stringify(NODE_ENV)
    }),

    new webpack.ProvidePlugin({
        moment: 'moment',
        _: 'lodash',
    }),
];

这是 webpack 配置中的 eslint 加载器:

{
                test: /\.jsx?$/, // both .js and .jsx
                loader: 'eslint-loader',
                include: path.resolve(process.cwd(), 'src'),
                enforce: 'pre',
                options: {
                    fix: true,
                },
            },

这是访问代码中变量的方式:`

if (NODE_ENV === "development") middleware = [...middleware, createLogger()]

问题:

因为我启用了 eslint 规则“no-undef”,当我尝试启动应用程序时,eslint 运行并给出错误“9:5 错误‘NODE_ENV’未定义 no-undef”。因为它不知道 NODE_ENV 会被 webpack 替换成一些其他的文本。 如果我禁用该规则,一切正常,但当然,我不想禁用该规则。

谁遇到过类似的问题或者知道怎么解决?谢谢!

最佳答案

你可以使用这个:

new webpack.EnvironmentPlugin([ 'NODE_ENV' ])

在你的代码中:

if (process.env.NODE_ENV === 'development') ...

这假设您的 Webpack 配置中的 NODE_ENV 变量是 process.env.NODE_ENV 的副本(换句话说,您通过环境变量,而不是配置文件)。

如果不是这样,你可以使用这个:

new webpack.DefinePlugin({
  'process.env.NODE_ENV': JSON.stringify(NODE_ENV)
}),

关于javascript - 错误 'NODE_ENV' 未定义 no-undef eslint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44231345/

相关文章:

javascript - 错误 : $digest already in progress when using two Http request calls in same angular Js function

laravel - 为什么 Laravel Vapor 在我的构建步骤中没有注入(inject) ASSET_URL?

Webpack 4热装: Invalid Host/Origin header

javascript - 使用 webpack 的独立 block 文件

javascript - FullCalendar 对象无法理解对象数组参数

java - 如何在jsp页面中根据名字显示名字

javascript - react .js : Can certain components be made SSR-rendering only?

javascript - 业力 + Webpack2 : module parse failed and imports not found

javascript - 锻造查看器 : Zoom in on a asset inside a room (front of the asset)

javascript - webpack 模块测试正则表达式不起作用