【问题标题】:process.node.env is undefined in eslintrc.jsprocess.node.env 在 eslintrc.js 中未定义
【发布时间】:2020-10-30 17:05:50
【问题描述】:

我需要一些 linting 规则来抛出错误或警告,具体取决于构建是开发还是生产。在开发期间的一个 React 组件文件中 process.env.NODE_ENV === 'development'.

在 eslintrc.js 我有:

const production = process.env.NODE_ENV !== 'development'; // returns true
console.log('%c process.env.NODE_ENV', 'color: green;', process.env.NODE_ENV); // returns undefined

我希望能够在 linting 规则警告之间切换。和这样的错误:

    rules: {
        'no-tabs': 0,
        indent: [2, 'tab', { SwitchCase: 1, VariableDeclarator: 1 }],
        'react/jsx-props-no-spreading': 'off',
        'no-unused-vars':
            production
                ? 'error'
                : 'warn',

为什么process.env.NODE_ENV 未定义,我该如何解决?

【问题讨论】:

  • 我想在您的 IDE 中进行静态分析期间,任何环境变量都将未定义,因为代码不是实际在环境中运行。

标签: reactjs eslint


【解决方案1】:

您可能会考虑只为 eslint 提供多个配置文件,而不是尝试在单个文件中处理环境更改。

根据文档: https://eslint.org/docs/user-guide/command-line-interface#basic-configuration

您可以只调用带有-c--config 标志的eslint 并传入额外的配置文件。这会将基本配置文件与标志中传递的文件合并

两个 lint 脚本的示例:
eslint --config ./dev-config.js **/*.js
eslint --config ./prod-config.js **/*.js

【讨论】:

    【解决方案2】:

    由于在静态分析期间它是未定义的,因此您始终可以执行以下操作:

      'no-console': (() => {
          if (typeof process.env.NODE_ENV === 'undefined') {
            return 'off';
          }
    
          if (process.env.NODE_ENV === 'development') {
            return 'off';
          }
    
          return 'error';
        })(),
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2023-03-26
      • 2022-11-15
      • 2021-10-17
      • 1970-01-01
      • 2020-03-18
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多