2017-06-13 86 views
12

我想设置一个React项目,它使用webpack和ESLint与airbnb配置ESLint。当我尝试启动了的WebPack开发服务器的项目,我得到以下错误:ESLint“模块构建失败”错误与eslint-config-airbnb

"Module build failed: Error: /react-template/node_modules/eslint-config-airbnb/rules/react-a11y.js: ESLint configuration is invalid: - Unexpected top-level property "ecmaFeatures"."

这是使用eslint - 配置 - 的Airbnb v 15.0.1。我检查了react-a11y.js文件并确认有一个“ecmaFeatures”的顶级属性。我知道自ESLint 2.0.0 ecmaFeatures现在应该在parserOptions属性下,但我不确定这只适用于.eslintrc文件。如果可能,我想使用airbnb配置,所以我很感激任何帮助。这是我的.eslintrc文件供参考。

.eslintrc

{ 
    "parser": "babel-eslint", 
    "parserOptions": { 
    "ecmaVersion": 2016, 
    "sourceType": "module", 
    "ecmaFeatures": { 
     "jsx": true 
    } 
    }, 
    "env": { 
    "es6": true, 
    "browser": true, 
    "node": true, 
    "jest": true 
    }, 
    "extends": ["airbnb"] 
} 

回答

20

我想出了一个解决方案。

你必须编辑react-a11y.jsreact.js位于./node_modules/.bin/eslint-config-airbnb/rules/

react-a11y.js删除:

ecmaFeatures: { 
    jsx: true 
}, 

,取而代之的是:

parserOptions: { 
    ecmaFeatures: { 
    jsx: true, 
    }, 
}, 

react.js只是删除:

ecmaFeatures: { 
    jsx: true 
}, 

,你应该是好去。

此外,我现在正在查看airbnb的回购,它看起来像他们在一个月前固定它,但我今天刚刚重新安装eslint-config-airbnb,所以我不知道那里发生了什么。

以下是指向react-a11y.js diffreact.js diff的链接。他们确切地显示您需要添加/删除的内容。

+0

太好了,是的,我想它可能需要重构使用parserOptions。谢谢! – darin

+0

选择矿井作为正确答案? – gucciferXCIV

0

你JSON是无效的。它在第一个“解析器”周围缺少引号;

{ 
    "parser": "babel-eslint", 
    "parserOptions": { 
    "ecmaVersion": 2016, 
    "sourceType": "module", 
    "ecmaFeatures": { 
    "jsx": true 
} 
}, 
    "env": { 
    "es6": true, 
    "browser": true, 
    "node": true, 
    "jest": true 
}, 
"extends": ["airbnb"] 
} 
+0

是的,对不起,实际上是我在Stack Overflow上发布的副本中的一个问题,但它在文件中很好,问题仍然存在: -/ – darin