合成抱怨ES6模块语法

dag*_*da1 24 javascript vim ecmascript-6 syntastic

我喜欢javascript的syntastic,但我使用的是新的ES6模块tranpiler,而且我对这些类型的语句不满意:

import Typeahead from './lib/components/ember-typeahead';
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以保持这种声明的语法安静吗?

sli*_*erg 59

Syntastic将使用JSHint检查JavaScript语法( 如果它可用)(我推荐使用jslint).

JSHint支持ES6的语法esnext标记,其包括用于支撑exportimport模块语法.

我建议在项目中添加一个.jshintrc文件来控制整个项目的JSHint行为(以及Syntastic):

{
  "esnext": true
}
Run Code Online (Sandbox Code Playgroud)

注意:要小心,因为使用该esnext标志将添加对JSHint当前支持的所有es6的新语言sytax的支持,而不仅仅是模块语法.

注意:esnext现在已经弃用了esversion语法.

{
  "esversion": 6
}
Run Code Online (Sandbox Code Playgroud)


gne*_*kus 20

要解决此问题,我建议按照此处的建议执行以下步骤:为React配置Vim:

安装eslintbabel-eslint:

npm install -g eslint babel-eslint
Run Code Online (Sandbox Code Playgroud)

.eslintrc在项目或全局~/.eslintrc配置中创建本地配置:

{
    "parser": "babel-eslint",
    "env": {
        "browser": true,
        "node": true
    },
    "settings": {
        "ecmascript": 6
    },
    "rules": {
        "strict": 0 // you can add more rules if you want
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,配置syntastic使用eslint:

let g:syntastic_javascript_checkers = ['eslint']
Run Code Online (Sandbox Code Playgroud)