次の名前のエクスポートが含まれているindex.jsファイルがあります。
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
},
}
理解した。これは実験的な機能なので、eslintパーサーとしてbabel-eslintを有効にする必要があります。
今私の.eslintrcはこのように見えます
{
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を使用している場合、babelはすべてのファイルの先頭にあるuse babel
によってアクティブ化されます。
use babel
は、use strict
と同様に、ファイルの先頭に配置する必要があります。その前のスペースがそれを非アクティブ化し、続いてjsエンジンがエクスポートステートメントまたは同様の「予期しないトークンのエクスポート」をトリップします。
違う:
use babel import { bla } from 'blub'
正しい:
use babel import { bla } from 'blub'