ESLint 错误地缩进多行参数 JavaScript 函数的单返回语句

我有这个带有多行参数和单体返回的函数(因为它们很长)。这是一个普通的 JS 文件:


const myFunction = (

    looooooooongParam1,

    looooooooongParam2,

    looooooooongParam3,

    looooooooongParam4,

) => (

    looooooooongParam1

    + looooooooongParam2

    + looooooooongParam3

    + looooooooongParam4

    + looooooooongParam4

);

ESLint 格式化错误地将返回的行向右移动。然后它抱怨缩进是错误的(当然是!):

http://img3.mukewang.com/63acfc9700013db406700301.jpg

我的 ESLint 规则是:


module.exports = {

    env: {

        browser: true,

        es2020: true,

    },


    extends: [

        'plugin:react/recommended',

        'airbnb',

        'plugin:@typescript-eslint/eslint-recommended',

        'plugin:@typescript-eslint/recommended',

    ],


    parser: '@typescript-eslint/parser',


    parserOptions: {

        ecmaFeatures: {

            jsx: true,

        },

        ecmaVersion: 11,

        sourceType: 'module',

    },


    plugins: [

        'react',

        '@typescript-eslint',

    ],


    rules: {

        'react/jsx-filename-extension': [2, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }],

        'react/jsx-indent': ['error', 4],

        indent: ['error', 4],

        'import/extensions': [

            'error',

            'ignorePackages',

            {

                js: 'never',

                jsx: 'never',

                ts: 'never',

                tsx: 'never',

                mjs: 'never',

            },

        ],


        'no-unused-vars': 'off',

        '@typescript-eslint/no-unused-vars': 'error',

    },


    settings: {

        'import/resolver': {

            node: {

                extensions: [

                    '.js',

                    '.jsx',

                    '.ts',

                    '.tsx',

                ],

            },

        },

    },

};

我在保存时使用 VSCode 并使用 eslint 格式化。VSCode相关设置:

http://img1.mukewang.com/63acfca60001533b10261226.jpg

有什么想法可以让 ESLint 将返回行保持在左侧吗?

编辑 1:在 VSCode 中保存文件时,我看到代码正确缩进了 0.2 秒,然后缩进不正确。

编辑 2:如果我的参数较少,在一行中,缩进效果很好,所以只有在多行参数时才会发生这种情况;.


慕莱坞森
浏览 68回答 1
1回答

繁星淼淼

在我手动运行eslint --fix该文件后,我注意到它工作正常,所以我发现VSCode 有它自己的格式化程序并且与 ESLint 正在做的事情重叠。解决方案:我不得不"javascript.format.enable": false禁用 VSCode 的 JS 格式化程序来格式化我的 JS 文件,只让 ESLint 执行它。注意:同样的故事适用于 TSX 文件,我不得不"typescript.format.enable": false让 ESLint 只格式化 TSX 代码。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript