Javascript eslint在命名导出上抛出分析错误意外标记

Javascript eslint在命名导出上抛出分析错误意外标记,javascript,ecmascript-6,eslint,Javascript,Ecmascript 6,Eslint,我有一个index.js文件,其中包含以下名为export的文件 export Main from './Main/Main' 但是,eslint不喜欢这样,并抛出错误 Parsing error: Unexpected token Main 我不知道为什么,因为应用程序工作正常,我相信这是有效的语法 我的.eslintrc文件如下所示 { env: { es6: true, browser: true }, parserOptions: { ecmaVe

我有一个index.js文件,其中包含以下名为export的文件

export Main from './Main/Main'
但是,eslint不喜欢这样,并抛出错误

Parsing error: Unexpected token Main
我不知道为什么,因为应用程序工作正常,我相信这是有效的语法

我的.eslintrc文件如下所示

{
  env: {
    es6: true,
    browser: true
  },
  parserOptions: {
    ecmaVersion: 6,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
      experimentalObjectRestSpread: true
    }
  },
  plugins: [
    "react",
  ],
  extends: ["eslint:recommended", "plugin:react/recommended", "standard"],
  "rules": {
    "comma-dangle" : [2, "always-multiline"],
    "semi": [2, "never"],
    "no-extra-semi": 2,
    "jsx-quotes": [2, "prefer-single"],
    "react/jsx-boolean-value": [2, "always"],
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}],
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}],
    "react/jsx-max-props-per-line": [2, {maximum: 3}],
    "react/jsx-no-literals": 2,
    "react/sort-prop-types": 2,
    "react/self-closing-comp": 2,
    "react/sort-comp": 2
  },
}
{
  parser: "babel-eslint",
  env: {
    es6: true,
    browser: true
  },
  parserOptions: {
    ecmaVersion: 6,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
      experimentalObjectRestSpread: true
    }
  },
  plugins: [
    "react",
  ],
  extends: ["eslint:recommended", "plugin:react/recommended", "standard"],
  "rules": {
    "comma-dangle" : [2, "always-multiline"],
    "semi": [2, "never"],
    "no-extra-semi": 2,
    "jsx-quotes": [2, "prefer-single"],
    "react/jsx-boolean-value": [2, "always"],
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}],
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}],
    "react/jsx-max-props-per-line": [2, {maximum: 3}],
    "react/jsx-no-literals": 2,
    "react/sort-prop-types": 2,
    "react/self-closing-comp": 2,
    "react/sort-comp": 2
  },
}

我明白了。这是一个实验性的特性,所以我需要启用babel eslint作为我的eslint解析器

现在我的.eslintrc看起来像这样

{
  env: {
    es6: true,
    browser: true
  },
  parserOptions: {
    ecmaVersion: 6,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
      experimentalObjectRestSpread: true
    }
  },
  plugins: [
    "react",
  ],
  extends: ["eslint:recommended", "plugin:react/recommended", "standard"],
  "rules": {
    "comma-dangle" : [2, "always-multiline"],
    "semi": [2, "never"],
    "no-extra-semi": 2,
    "jsx-quotes": [2, "prefer-single"],
    "react/jsx-boolean-value": [2, "always"],
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}],
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}],
    "react/jsx-max-props-per-line": [2, {maximum: 3}],
    "react/jsx-no-literals": 2,
    "react/sort-prop-types": 2,
    "react/self-closing-comp": 2,
    "react/sort-comp": 2
  },
}
{
  parser: "babel-eslint",
  env: {
    es6: true,
    browser: true
  },
  parserOptions: {
    ecmaVersion: 6,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
      experimentalObjectRestSpread: true
    }
  },
  plugins: [
    "react",
  ],
  extends: ["eslint:recommended", "plugin:react/recommended", "standard"],
  "rules": {
    "comma-dangle" : [2, "always-multiline"],
    "semi": [2, "never"],
    "no-extra-semi": 2,
    "jsx-quotes": [2, "prefer-single"],
    "react/jsx-boolean-value": [2, "always"],
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}],
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}],
    "react/jsx-max-props-per-line": [2, {maximum: 3}],
    "react/jsx-no-literals": 2,
    "react/sort-prop-types": 2,
    "react/self-closing-comp": 2,
    "react/sort-comp": 2
  },
}

由于不同的原因,我犯了相同的错误,这里是我出错的地方:

如果在atom软件包开发中使用babel,则每个文件开头的
use babel
会激活babel

使用babel
,就像
使用strict
需要在文件的最开头一样!只要前面有一个空格,它就会停用它,接着js引擎就会被你的export语句绊倒,或者类似的“意外令牌导出”

错:


使用巴别塔
从'blub'导入{bla}

正确:


使用巴别塔
从'blub'导入{bla}

这是无效的语法,您可以通过查看规范来验证:。正确的解决方案取决于
'./Main/Main'
导出的内容以及它的工作方式。这是一个语法建议,但我认为您必须启用它。@FelixKling您是对的。从这里得到了主意谢谢你的提醒!如果这个实验性的特性是您需要babel eslint的唯一原因,并且您不想处理开销,那么您可以使用“/Main/Main”中的
export{default as Main}”,它是有效的ES6,在默认解析器中可以正常工作。@btmills这是一个很好的洞察。非常感谢。请!马克:这就是答案!