41

我最近用create-react-project.

问题是,在我开发时,每次 ESLint 出现问题时,构建都会中断并且无法编译代码。

我可以在继续运行 ESLint 并报告稍后修复的错误的同时保持构建运行吗?

4

6 回答 6

55

如果你想强制 ESLint 总是发出警告(不会阻止你构建)而不是错误,你需要设置emitWarning: true

{
    enforce: 'pre',
    include: paths.appSrc,
    test: /\.(js|jsx|mjs)$/,
    use: [{
        loader: require.resolve('eslint-loader'),
        options: {
            formatter: eslintFormatter,
            eslintPath: require.resolve('eslint'),
            emitWarning: true,  HERE
        },
    }],
},

如文档中所述

错误和警告

默认情况下,加载程序将根据 eslint 错误/警告计数自动调整错误报告。您仍然可以通过使用emitErrororemitWarning选项来强制执行此行为:

  • emitError(默认false:)

    如果此选项设置为 true,Loader 将始终返回错误。

  • emitWarning(默认false:)

    如果选项设置为 ,加载程序将始终返回警告true。如果您使用热模块替换,您可能希望在开发中启用此功能,否则当出现 eslint 错误时将跳过更新。

  • ...

于 2018-01-31T23:29:26.040 回答
4

只需添加DISABLE_ESLINT_PLUGIN=true您的.env文件

干杯!

于 2021-07-27T09:24:38.630 回答
3

由于eslint-loader现在已弃用并且eslint-webpack-plugin现在用于create-react-app检查文档,因此我能够通过向eslint-webpack-plugin

弹出您的反应应用程序后,将这些选项添加到ESLintPlugin选项中:

      new ESLintPlugin({
        // Plugin options
        extensions: ['js', 'mjs', 'jsx', 'ts', 'tsx'],
        formatter: require.resolve('react-dev-utils/eslintFormatter'),
        eslintPath: require.resolve('eslint'),
        context: paths.appSrc,
        failOnError: false,  <== `This one`
        emitWarning: true,  <== `And this one`
        // ESLint class options
        cwd: paths.appPath,
        resolvePluginsRelativeTo: __dirname,
        baseConfig: {
          extends: [require.resolve('eslint-config-react-app/base')],
          rules: {
            ...(!hasJsxRuntime && {
              'react/react-in-jsx-scope': 'error'
            })
          }
        }
      })
于 2020-10-25T14:22:29.023 回答
1

对于希望在 2021 年解决此问题的人,您只需在 .env.development 文件中设置以下内容即可忽略 TypeScript 错误

TSC_COMPILE_ON_ERROR=true

来源:https ://create-react-app.dev/docs/advanced-configuration/#:~:text=TSC_COMPILE_ON_ERROR

此外,要忽略 ESLint 错误,请使用 craco 覆盖eslint-webpack-plugin默认配置以忽略开发环境中的错误。

const eslintWebpackPlugin = require("eslint-webpack-plugin");
const process = require("process");
module.exports = {
  webpack: {
    configure: (config) => {
      config.plugins.forEach((plugin) => {
        if (plugin instanceof eslintWebpackPlugin) {
          // Ignore ESLint Errors.
          plugin.options.failOnError = process.env.NODE_ENV === "production";
        }
      });
      return config;
    },
  },
};
于 2021-09-04T12:25:06.843 回答
1

我可能迟到了答案,但是如果您 ESLINT_NO_DEV_ERRORS=true.env文件中添加,则会对错误进行排序。

PS:它适用于react script 4.0.3及以上

于 2021-11-03T09:31:55.347 回答
0

好的,我刚刚从我的 webpack 配置中评论了这一行

  // {
  //   test: /\.(js|jsx|mjs)$/,
  //   enforce: 'pre',
  //   use: [
  //     {
  //       options: {
  //         formatter: eslintFormatter,
  //         eslintPath: require.resolve('eslint'),
  //
  //       },
  //       loader: require.resolve('eslint-loader'),
  //     },
  //   ],
  //   include: paths.appSrc,
  // },
于 2018-01-14T12:45:38.800 回答