错误' NODE_ENV'没有定义no-undef eslint

时间:2017-05-28 19:45:13

标签: javascript webpack webpack-2 eslint

使用eslint在webpack 2上的应用程序。

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

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

setTimeout(function() {
    $('#invoices-table').DataTable({
        responsive: true,
        columnDefs: [{ orderable: false, targets: [-1, -2, -3] }],
        "lengthMenu": [
            [100, 5, 25, 50, -1],
            [100, 5, 25, 50, "All"]
        ],
        dom: 'Bfrtip',  

        initComplete: function() {
            status_icons() // it executes my function for the first page of results
            var api = this.api();
            // some irrelevant code that uses api and does not cause my issue
            // ...

            $('.paginate_button').on('click', function() {
                status_icons(); // it executes for the second page but not for the rest
            });

        }
    });
}, 3000);

这是webpack config中的eslint加载器:

var plugins = [

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

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

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

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

问题:

由于我启用了eslint规则' no-undef',当我尝试启动应用时,eslint会运行并且它会出现错误" 9:5错误' NODE_ENV&# 39;没有定义no-undef"。因为它不知道NODE_ENV将被webpack替换为其他一些文本。 如果我禁用该规则,一切正常,但当然,我不想禁用此规则。

任何人遇到类似的问题或知道如何解决?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用:

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)
}),